12_traffic_timer_int(改)

来源:互联网 发布:局域网远程协助软件 编辑:程序博客网 时间:2024/04/30 23:01
CURR_NUMEQU30H;HEXVAR_TIMEREQU31H;Soft timerVAR_LEDEQU32H;Led value,#03FH for red led,#0CFH for green led,#0F3H for yellow ledVAR_HIS_LEDEQU33HDAT_74164bitP0.6CLK_74164bitP0.7DIG_1bitp0.5DIG_2bitp0.4;*******************************************org0000HjmpMAINorg000BHjmpinterrupt_T0;*******************************************org0030H;Start program from 0030HMAIN:movP0,#0FFH;Initialize the portmovP1,#0FFHmovP2,#0FFHmovP3,#0FFH/*Initilize the var*/movCURR_NUM,#18movVAR_TIMER,#00HmovVAR_LED,#03FHmovP1,VAR_LED/*Initialize T0*/movTMOD,#01HmovTH0,#0B1H;20ms,load numbermovTL0,#0E0HsetbTR0;Start T0setbET0;Enable T0 inerruptsetbEA;Enable interrupt;movIE,#82H;#10000010BMAIN_LOOP:callDISPLAY_NUM;Display numberjmpMAIN_LOOPret;****************************************************interrupt_T0:pushacc;Pay attention to herepushpsw;Reset T0,must be done;clrTF0;auto clear the tag of overflowmovTH0,#0B1H;20ms,reload numbermovTL0,#0E0HincVAR_TIMER;Add 20ms/*If VAR_TIMER=50,then time for 1s */mova,VAR_TIMERcjnea,#50,INT_T0_EXITmovVAR_TIMER,#00HcallNUM_SUBINT_T0_EXIT:poppswpopaccreti;****************************************************DISPLAY_NUM:;A<-A/B,mova,CURR_NUMmovb,#0Ahdivabmovr0,a;Display the low valuemova,bmovdptr,#TAB_LEDmovca,@a+dptrcallsendTo74164;Display the numbetclrDIG_1setbDIG_2callDELAY_DISP;Display the high valuemova,r0movdptr,#TAB_LEDmovca,@a+dptrcallsendTo74164;Display the numbetclrDIG_2setbDIG_1callDELAY_DISPret;*******************************************;Send data of A to chip 74LS164sendTo74164:push07hpushaccmovr7,#08;send 8 bits  SEND164_LOOP:clrCLK_74164;clear clock-line for reading datarlcamovDAT_74164,c;move data-bit to data-linesetbCLK_74164;send data to 74164djnzr7,SEND164_LOOPclrCLK_74164;clear clock-line for reading data        popaccpop07hret;****************************************************NUM_SUB:;Get previos valuemova,CURR_NUMjzNUM_SUB_RESETNUM_SUB_1:;Simple sub 1mova,CURR_NUMcjnea,#03,DDECjmpTo_YellowTo_Yellow:movVAR_HIS_LED,VAR_LEDmovVAR_LED,#0F3Hmovp1,VAR_LEDdecacjnea,#00,NUM_SUB_EXITNUM_SUB_RESET:mova,#18;callCHANGE_LED;Red to green or green to redDDEC:decaNUM_SUB_EXIT:movCURR_NUM,aret;****************************************************CHANGE_LED:pushaccmova,VAR_HIS_LEDcjnea,#03FH,TO_RED_LEDmovVAR_LED,#0CFH;Red to green ledjmpCHANGE_LED_EXIT     TO_RED_LED:movVAR_LED,#03FH;Green to red led    CHANGE_LED_EXIT:movP1,VAR_LEDpopaccret;****************************************************DELAY_DISP:movr7,#10DELAY_DISP_LOOP:movr6,#200djnzr6,$movr6,#200djnzr6,$djnzr7,DELAY_DISP_LOOPret;****************************************************;****************************************************;LED codeTAB_LED:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;****************************************************END

原创粉丝点击