基于51单片机电子秒表倒计时器proteus仿真 汇编程序 数码管显示LCD1602显示
生活随笔
收集整理的這篇文章主要介紹了
基于51单片机电子秒表倒计时器proteus仿真 汇编程序 数码管显示LCD1602显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
剛剛咱們講了電子秒表用的是C語言,接下來咱們再講一講用匯編。
硬件設計
電路圖1:
數碼管顯示;時間清零;啟動計時;暫定計時;繼續計時;
電路圖2
程序設計
TLOW EQU 78H THIGH EQU 0ECH LED_WEI_Pro EQU 0f0H;數碼管位選 保護位;寄存器設置 COUN_INT EQU 21H ;5ms * 20 = 100ms = 0.1S COUN_PASSNUM EQU 22H ; COUN_TIME_L EQU 23H ;時間累加 低位 100MS加1 COUN_TIME_H EQU 24H ;時間累加 高位COUN_WEI EQU 3CH ;顯示位 DISP_BUF EQU 50H;端口配置 LED_WEI EQU P2 ;數碼管位選 LED_DAT EQU P0 ;數碼管數據 BEEP_PIN EQU P3.7 ;蜂鳴器 KEY_START EQU P3.0 ;啟動 KEY_STOP EQU P3.1 ;停止/歸零鍵 ;標志位配置 FLAG_TIMING EQU 20H.1 ;20H.1 為計時狀態標記 FLAG_GO EQU 20H.2 ;20H.2 為使能標記 BEEP_EN EQU 20H.3 ;蜂鳴器響使能;--------------------------------------------------ORG 0000HJMP MAINORG 0BHJMP T0_INT ;-------------------------------------------------- MAIN:MOV SP,#60HMOV A,#00HMOV COUN_WEI,AMOV COUN_PASSNUM,A;MOV COUN_TIME_L,AMOV COUN_TIME_H,ACLR CCLR FLAG_GOCLR FLAG_TIMING;剛開機為非計時狀態SETB BEEP_EN;開機響一聲CALL INIT_TIMERSETB TR0 LOOP:CALL BEEP K1: JB KEY_START,K2;啟動NOPJNB KEY_START,$ SETB BEEP_EN;蜂鳴器響JB FLAG_GO,LOOPSETB FLAG_GOSETB FLAG_TIMINGJMP LOOP K2:JB KEY_STOP,LOOP;暫停、歸零鍵NOPJNB KEY_STOP,$SETB BEEP_EN;蜂鳴器響JB FLAG_TIMING,STOP;計時中按此鍵則暫停計時,暫停時按此鍵則歸零 RESET_TIME:;歸零CLR FLAG_GOCLR FLAG_TIMINGMOV COUN_TIME_L,#00HMOV COUN_TIME_H,#00HCALL DISP_TRANSDATJMP LOOP STOP:;暫停CLR FLAG_GOCLR FLAG_TIMING;暫停計時JMP LOOP;;;------------------------- ;;------------------------- ;;顯示子程序 ;;使用寄存器組:第2組寄存器 ;;出口: ;;入口: ;;-------------------------- DISPLAY:PUSH ACCPUSH PSW CLR PSW.3 ;RS1、RS0(PSW.4、PSW.3): 1 0SETB PSW.4; MOV DISP_BUF,#1H ;test; MOV DISP_BUF+1,#2H; MOV DISP_BUF+2,#3H; MOV DISP_BUF+3,#4HMOV A,COUN_WEICJNE A,#0,CJMP1JMP DISP_WEI1 CJMP1: CJNE A,#1,CJMP2JMP DISP_WEI2 CJMP2:CJNE A,#2,CJMP3JMP DISP_WEI3 CJMP3:CJNE A,#3,CJMP4JMP DISP_WEI4 CJMP4:MOV COUN_WEI,#0 DISP_WEI1:MOV A,LED_WEI;P3ANL A,#LED_WEI_ProORL A,#01H ; CPL AMOV LED_WEI,AJMP DISP_WEI_END DISP_WEI2: MOV A,LED_WEIANL A,#LED_WEI_ProORL A,#02H ; CPL AMOV LED_WEI,AJMP DISP_WEI_END DISP_WEI3:MOV A,LED_WEIANL A,#LED_WEI_ProORL A,#04H ; CPL AMOV LED_WEI,AJMP DISP_WEI_END DISP_WEI4:MOV A,LED_WEIANL A,#LED_WEI_ProORL A,#08H ; CPL AMOV LED_WEI,A DISP_WEI_END:MOV R0,#DISP_BUFMOV A,COUN_WEIADD A,R0MOV R0,AMOV A,@R0MOV DPTR,#LED_TABMOVC A,@A+DPTRMOV B,AMOV A,COUN_WEICJNE A,#2,DISP_WEI_NODOT;增加小數點MOV A,BANL A,#7FHMOV B,A DISP_WEI_NODOT:MOV A,BMOV LED_DAT,AINC COUN_WEIPOP PSWPOP ACC RET LED_TAB:;共陽數碼管表DB 0C0H ;"0" DB 0F9H ;"1"DB 0A4H ;"2"DB 0B0H ;"3"DB 99H ;"4"DB 92H ;"5"DB 82H ;"6"DB 0F8H ;"7"附:http://www.jh-tec.cn/archives/7292
總結
以上是生活随笔為你收集整理的基于51单片机电子秒表倒计时器proteus仿真 汇编程序 数码管显示LCD1602显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在ubuntu的anaconda安装te
- 下一篇: JS:秒表倒计时