📄 speed stacks.asm
字号:
baz Reset_keyKEY_NOFREE: lda LastKeyH,0 sub KeyPressH,0 baz FnKeyProcEnd lda LastKeyH,0 sta KeyPressH,0 andim KeyPressH,0001b baz Power_Key jmp FnKeyProcEnd;---------------------------------------------------------------Reset_key: lda SysRunFlg,0 ba0 $+2 jmp FnKeyProcEnd andim WaitTFlg,1110b ldi JsReg1,0 ldi JsReg2,0 ldi JsReg3,0 ldi JsReg4,0 ldi JsReg5,0 ldi MsReg0,0 ldi MsReg1,0 ldi MsReg2,0 ldi MsReg3,0 ldi SecRegL,0 ldi SecRegH,0 ldi MinRegL,0 andim Stop_flg,0000b ;; orim Stop_flg,1000b ldi SysTime1,0 ldi SysTime2,0 ldi SysTime3,0 orim PORTA,1100B andim LedFFlg,0000b orim WaitTFlg,0010b orim Key_flg,0001b andim Key_flg,0011b jmp FnKeyProcEnd ;---------------------------------------------------------------Power_Key: adim KeyTime,1 sbi KeyTime,1 baz sys_on sbi KeyTime,2 baz $+2 jmp FnKeyProcEndsys_off: ;关机键关机 andim KeyTime,0000b lda Stop_flg,0 ba0 $+2 jmp sys_next ldi MinRegH,0 ldi MinRegL,0 ldi SecRegH,0 ldi SecRegL,0 ldi MsReg0,0 ldi MsReg1,0 ldi MsReg2,0 ldi MsReg3,0sys_next: ldi JsReg1,0 ldi JsReg2,0 ldi JsReg3,0 ldi JsReg4,0 ldi JsReg5,0 orim PORTA,1100B ldi LedFFlg,0 ldi Stop_flg,0 andim Key_flg,0000b andim WaitTFlg,0000b andim SysRunFlg,0000b andim Key_flg,0000b ldi DPL,00H ldi DPM,00H ldi DPH,06HClearLcdclose: ldi INX,00H adim DPL,01H sbi DPL,0aH bnz ClearLcdclose ldi PORTB,0100B orim XmJsFlg,0001b jmp FnKeyProcEnd;---------------------------------------------- sys_on: orim SysRunFlg,0001b ;开机标志 orim PORTA,1100b andim LedFFlg,0000b andim Stop_flg,0000b; orim Stop_flg,1000b andim Key_flg,0000b ldi SysTime1,0 ldi SysTime2,0 ldi SysTime3,0 ldi XmJsFlg,0 ldi XmJsRegL,0 ldi XmJsRegM,0 ldi XmJsRegH,0 ldi JsReg1,0 ldi JsReg2,0 ldi JsReg3,0 ; ldi JsReg4,0 ldi JsReg5,0 ldi PORTB,0000B lda MsReg1,0 or MsReg2,0 baz $+3swait_reset: orim WaitTFlg,0001b jmp FnKeyProcEnd lda SecRegL,0 baz $+2 jmp swait_reset andim WaitTFlg,1110b orim WaitTFlg,0010b orim Key_flg,0001b FnKeyProcEnd: rtni;*****************************************************; TouchProc;***************************************************** FnTouchProc: lda SysRunFlg,0 ba0 $+2 ;system run flg=1? jmp FnTouchProcEnd lda SysRunFlg,0 ba3 $+2 jmp FnTouchProcEnd andim SysRunFlg,0111b ; lda PORTB,0; ba0 touch_check lda PORTB,0 ba0 $+2 jmp release_p lda PORTB,0 ba1 touch_check ; lda PORTB,0; sta Temp,0; andim Temp,0011b; baz touch_check release_p: ;touch_key!=1,release lda Key_flg,0 ba0 $+2 jmp close_redled lda Key_flg,0 ba2 $+2 jmp close_redled orim LedFFlg,0001b orim Stop_flg,0001b jmp FnTouchProcEndclose_redled: andim Stop_flg,0000b andim LedFFlg,0000b orim PORTA,1100B ANDIM WaitTFlg,1011B ldi JsReg4,0 ldi JsReg5,0 jmp FnTouchProcEnd touch_check: andim PORTA,1011B lda Key_flg,0 ba0 $+2 jmp FnTouchProcEnd lda LedFFlg,0 ba0 $+2 jmp first_touch andim LedFFlg,1110b andim Stop_flg,0000b ldi SysTime1,0 ldi SysTime2,0 ldi SysTime3,0 orim WaitTFlg,0001b orim PORTA,1000b andim Key_flg,1110b jmp FnTouchProcEnd first_touch: orim WaitTFlg,0100b lda LedFFlg,0 ba1 $+2 jmp FnTouchProcEnd andim WaitTFlg,1101b ldi JsReg1,0 ldi JsReg2,0 ldi JsReg3,0 andim LedFFlg,1101b andim PORTA,0011B orim Key_flg,1100b FnTouchProcEnd: rtni;***************************************************** ;LCD DISPLAY PROCESS;***************************************************** TestLcdproc: lda TestFlg,0 ba0 $+2 jmp FnDispPrcEnd lda dispflg,0 ba0 $+2 jmp FnLcdDispPrc ldi dispflg,0 jmp TestLcd FnLcdDispPrc: lda SysRunFlg,0 ba0 $+2 ;run_flg=1 jmp FnDispPrcEnd lda SysRunFlg,0 ba1 $+2 jmp FnDispPrcEnd andim SysRunFlg,1101b TestLcd: ldi TBR,0FH lda MsReg1,0 call 06EFH sta Seg10,6 lda TBR,0 STA Seg9,6 ldi TBR,0FH lda MsReg2,0 call 06EFH sta Seg8,6 lda TBR,0 STA Seg7,6 ldi TBR,0FH lda SecRegL,0 call 06EFH sta Temp,0 orim Temp,1000b sta Seg6,6 lda TBR,0 STA Seg5,6 lda TestFlg,0 ba0 testSech lda SecRegH,0 baz SecNo_diplay testSech: ;高位!=0,显示 ldi TBR,0FH lda SecRegH,0 call 06EFH sta Seg4,6 lda TBR,0 sta Seg3,6 jmp next_display SecNo_diplay: ldi Temp,0000b sta Seg4,6 ldi Temp,0000b sta Seg3,6 next_display: lda TestFlg,0 ba0 testMinL lda MinRegL,0 baz MinNo_displaytestMinL: ldi TBR,0FH lda MinRegL,0 call 06EFH ;H-->TBR,L-->A sta Temp,0 orim Temp,1000b sta Seg2,6 lda TBR,0 sta Seg1,6 jmp FnDispPrcEndMinNo_display: ldi Temp,0000b ;高位=0,不显示 sta Seg2,6 ldi Temp,0000b sta Seg1,6 FnDispPrcEnd: rtni;*****************************************************FnJustProc: lda SysRunFlg,0 ba0 $+2 ;run_flg=1 jmp FnJustProcEnd lda Sec_flg,0 ;1S ba0 $+3 ba3 check_wait jmp FnJustProcEnd andim Sec_flg,1110b lda Stop_flg,0 ba0 $+2 jmp FnJustProcEnd adim SecRegL,01h daa SecRegL ldi Temp,0 adcm SecRegH,0 sbi SecRegH,6h baz $+2 jmp FnJustProcEnd ldi SecRegL,0 ldi SecRegH,0 adim MinRegL,01h daa MinRegL ldi Temp,0 adcm MinRegH sbi MinRegH,1h baz Fn10Min_off jmp FnJustProcEndcheck_wait: andim Sec_flg,0111b lda WaitTFlg,0 ba0 $+3 ba1 $+2 jmp FnJustProcEnd adim JsReg1,1 daa JsReg1 ldi Temp,0 adcm JsReg2,0 daa JsReg2 ldi Temp,0 adcm JsReg3,0 sbi JsReg3,3 baz $+2 jmp FnJustProcEnd andim WaitTFlg,1100b jmp FnoffProc FnJustProcEnd: rtni;*****************************************************Fn10Min_off: ldi MinRegH,0 ldi MinRegL,0 ldi SecRegH,0 ldi SecRegL,0 ldi MsReg0,0 ldi MsReg1,0 ldi MsReg2,0 ldi MsReg3,0FnoffProc: ldi JsReg1,0 ldi JsReg2,0 ldi JsReg3,0 ldi JsReg4,0 ldi JsReg5,0 orim PORTA,1100B andim LedFFlg,0000b andim WaitTFlg,0000b andim SysRunFlg,0000b andim Stop_flg,0000b andim Key_flg,0000b ldi SysTime1,0 ldi SysTime2,0 ldi SysTime3,0 ldi DPL,00H ldi DPM,00H ldi DPH,06HClearLcd: ldi INX,00H adim DPL,01H sbi DPL,0aH bnz ClearLcd jmp sys_stop; jmp Reset FnoffProcend: rtni;***************************************************** FnTimeFP: lda TimeFlg,0 ba0 $+2 jmp FnTimeFPend andim TimeFlg,1110b js_check: lda WaitTFlg,0 ba2 $+2 jmp other_proc adim JsReg4,1 daa JsReg4 ldi Temp,0 adcm JsReg5,0 sbi JsReg5,5 baz $+2 jmp other_proc ldi JsReg4,0 ldi JsReg5,0 andim WaitTFlg,1011b orim LedFFlg,0010b other_proc: adim Tc0Reg,1 sbi Tc0Reg,2 baz $+2 jmp check_disp ldi Tc0Reg,0 orim SysRunFlg,0100b flash_proc: lda LedFFlg,0 ba0 $+2 jmp check_disp eorim FlashReg,0001b ;FlashReg^1 lda FlashReg,0 ba0 $+2 jmp close_led andim PORTA,0011b jmp check_dispclose_led: orim PORTA,1100b check_disp: adim DispRegL,1 sbi DispRegL,5 baz $+2 jmp FnTimeFPend ldi DispRegL,0 orim SysRunFlg,0010b adim touchreg,1 sbi touchreg,2 baz $+2 jmp FnTimeFPend ldi touchreg,0 orim SysRunFlg,1000b ; jmp FnTimeFPend FnTimeFPend: rtni ;*****************************************************; TIMER0 中断服务程序 ;*****************************************************Timer0_Isp: sta AcBak,00H ;保护AC的值 andim IRQ,1011B ;清TIMER0中断请求标志 adim AddReg,1 sbi AddReg,2 baz $+2 jmp next_check ldi AddReg,0 orim TimeFlg,0001b lda TestFlg,0 ba0 testjsproc nextproc: lda XmJsFlg,0 ba0 xmjsprocnext_check: lda Stop_flg,0 ba0 $+2 ;stop_flg=1,开始计数 jmp systime andim Sec_flg,0111b adim MsReg1,01h daa MsReg1 ldi Temp,0 adcm MsReg2,0 daa MsReg2 ldi Temp,0 adcm MsReg3,0 sbi MsReg3,01h baz $+2 jmp Timer0_Isp_end ldi MsReg0,0 ;ms寄存器清0 ldi MsReg1,0 ldi MsReg2,0 ldi MsReg3,0 orim Sec_flg,0001b ;秒标志 jmp Timer0_Isp_endsystime: andim Sec_flg,1110btestp: adim SysTime1,1 daa SysTime1 ldi Temp,0 adcm SysTime2,0 daa SysTime2 ldi Temp,0 adcm SysTime3,0 sbi SysTime3,1 baz $+2 jmp Timer0_Isp_end ldi SysTime1,0 ldi SysTime2,0 ldi SysTime3,0 orim Sec_flg,1000b jmp Timer0_Isp_endxmjsproc: adim XmJsRegL,1 daa XmJsRegL ldi Temp,0 adcm XmJsRegM,0 daa XmJsRegM ldi Temp,0 adcm XmJsRegH,0 sbi XmJsRegH,3 ;3s baz $+2 jmp Timer0_Isp_end ldi XmJsRegL,0 ldi XmJsRegM,0 ldi XmJsRegH,0 andim XmJsFlg,0000b orim XmJsFlg,0010b jmp Timer0_Isp_end testjsproc: adim testRegL,1 daa testRegL ldi Temp,0 adcm testRegM,0 sbi testRegM,5 baz $+2 jmp Timer0_Isp_end ldi testRegL,0 ldi testRegM,0; ldi testRegH,0 orim Sec_flg,0010b Timer0_Isp_end: ldi IE,0110b lda AcBak,00H RTNI ;*****************************************************; 外部 中断服务程序 ;*****************************************************INT0_Isp: sta AcBak,00H andim IRQ,0111B ldi IE,0110b lda AcBak,00H INT0_Isp_End: rtni;*****************************************************; data table ;***************************************************** ORG 06EFH TJMP;----------------------------------------------------;LCD显示段选码数据表 ORG 06F0H ; d,e,g,f dp,c,b,a RTNW 1101B,0111B ;0 RTNW 0000B,0110B ;1 RTNW 1110B,0011B ;2 RTNW 1010B,0111B ;3 RTNW 0011B,0110B ;4 RTNW 1011B,0101B ;5 RTNW 1111B,0101B ;6 RTNW 0000B,0111B ;7 RTNW 1111B,0111B ;8 RTNW 1011B,0111B ;9;***************************************************** END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -