?? 單片機秒表程序帶注釋.txt
字號:
51單片機秒表程序
作者或來源:daniel / 2006-8-26 12:10:07 / 瀏覽:1498
相關文章-匯編程序, 51單片機
上一篇
帶中文字庫的12864液晶模塊的程序
下一篇
按鍵掃描程序2
;**************************************************
;秒鐘程序,每到1S,顯示值加1,有高位0消隱功能
;**************************************************
FIRST EQU P2.1 ;第一位數碼管的位控制
SECOND EQU P2.0 ;第二位數碼管的位控制
SEC BIT 00H ;1秒到的標記
VALUE EQU 21H ;
COUNT EQU 22H ;軟件計數器
COUNTER EQU 20 ;軟件計數器的計數值,該值乘以定時器的定時值(50ms),即得到1s的定時值
DISPBUF EQU 5EH ;5E,5FH是顯示緩沖區
TMRVAR EQU 16857 ;(65536-50000)*12/11.0592 定時器初值
HIDDEN EQU 10
ORG 0000H
JMP START
ORG 0*8+3 ;INT0中斷入口
RETI
ORG 1*8+3 ;TIMER0中斷入口
JMP INT_T0 ;轉去定時器0中斷服務程序入口
ORG 2*8+3 ;INT1中斷入口
RETI
ORG 3*8+3 ;TIMER1中斷入口
RETI
ORG 4*8+3 ;串行中斷入口
RETI
START:
MOV SP,#5FH ;設置堆棧指針初值
MOV VALUE,#0 ;秒計數器
MOV DISPBUF,#0;
MOV DISPBUF+1,#0
CALL DISP
CALL INIT_T0
CLR SEC
SETB EA ;開總中斷
LOOP:
JBC SEC,NEXT ;一秒到,清除一秒到的標志
CALL DISP ;調用顯示程序
JMP LOOP ;一秒未到,繼續循環
NEXT:
MOV A,VALUE ;獲得秒的數值
MOV B,#10
DIV AB ;二進制轉化為十進制,十位和個位分送顯示緩沖區
JZ NEXT1 ;如果A中值是0,高位0消隱
JMP NEXT2 ;否則直接送去顯示
NEXT1:
MOV A,#HIDDEN
NEXT2:
MOV DISPBUF,A
MOV DISPBUF+1,B ;個位送顯示緩沖區
CALL DISP
JMP LOOP
;主程序到此結束
DISP:
PUSH ACC ;ACC入棧
PUSH PSW ;PSW入棧
MOV A,DISPBUF ;取第一個待顯示數
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR ;取字形碼
MOV P0,A ;將字形碼送P0位(段口)
CLR FIRST ;開第一位顯示器位口
LCALL DELAY ;延時5毫秒
SETB FIRST ;關閉第一位顯示器(開始準備第二位的數據)
MOV A,DISPBUF+1 ;取顯示緩沖區的第二位
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
MOV P0,A ;將第二個字形碼送P0口
CLR SECOND ;開第二位顯示器
LCALL DELAY ;延時
SETB SECOND ;關第二位顯示
POP PSW
POP ACC
RET
DELAY:
PUSH PSW
SETB RS0
MOV R7,#50
D1: MOV R6,#50
D2: DJNZ R6,$
DJNZ R7,D1
POP PSW
RET
DISPTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0ffh
INIT_T0: ;初始化T0為10毫秒的定時器
MOV TMOD,#01H
MOV TH0,#HIGH(TMRVAR)
MOV TL0,#LOW(TMRVAR)
SETB ET0 ;開T0中斷
SETB TR0 ;定時器0開始運行
RET ;返回
INT_T0:
PUSH ACC
PUSH PSW ;中斷保護
MOV TH0,#HIGH(TMRVAR)
MOV TL0,#LOW(TMRVAR)
INC COUNT ;軟件計數器加1
MOV A,COUNT
CJNE A,#COUNTER,INT_RET
MOV COUNT,#0 ;計到100,軟件計數器清0
SETB SEC ;將秒標志置為1
INC VALUE ;秒的值加1
MOV A,VALUE
CJNE A,#60,INT_RET
MOV VALUE,#0
INT_RET:
POP PSW
POP ACC
RETI
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -