標題:
最簡單的單片機數(shù)字鐘匯編程序+電路圖
[打印本頁]
作者:
daniu
時間:
2014-12-27 17:09
標題:
最簡單的單片機數(shù)字鐘匯編程序+電路圖
;===============================================================
;程序編寫人:張培、蘭建文
;編寫地點:51hei單片機培訓機構(gòu)
;時間:2009年6月19日下午 星期四
;功能:本程序?qū)崿F(xiàn)工業(yè)控制數(shù)字鐘功能。
;P3口實現(xiàn)對數(shù)碼管的片選功能
;==========================開始初始化===========================
PIANXUAN EQU P3
SHUCHU EQU P2
MIAO EQU 30H
FEN EQU 31H
SHI EQU 32H
SHUZI EQU 33H
C_0 BIT 20H.0
ORG 0000H
JMP START
ORG 000BH
JMP T0_1
ORG 0030H
START:
CALL INIT
MOV MIAO,#00
MOV FEN,#59
MOV SHI,#23
MOV DPTR,#TAB
MOV R2,#5
MAIN:
JNB C_0,$
CLR C_0
LL: CALL DISPLAY
CALL SHIJIAN
JMP MAIN
;========================時間子程序=============================
;輸入:"30H、31H、32H"
;輸出:無
;實現(xiàn)的功能:時分秒的計算。
;===============================================================
SHIJIAN:
DJNZ R2,TIAOCHU
MOV R2,#50
CPL P3.6
INC MIAO
MOV R3,MIAO
CJNE R3,#60,TIAOCHU
MOV MIAO,#00
INC FEN
MOV R3,FEN
CJNE R3,#60,TIAOCHU
MOV FEN,#00
INC SHI
MOV R3,SHI
CJNE R3,#24,TIAOCHU
MOV SHI,#00
TIAOCHU:RET
;========================顯示子程序=============================
;輸入:"A"
;輸出:"P0口"
;實現(xiàn)的功能:把A的數(shù)輸出到P0口顯示,十位和個位分開顯示
;===============================================================
DISPLAY:MOV SHUZI,MIAO
CALL JISUAN
MOVC A,@A+DPTR
MOV SHUCHU,A ;顯示十位
MOV PIANXUAN,#10H ;片選
CALL DELAY
MOV PIANXUAN,#00
MOV A,B
MOVC A,@A+DPTR
MOV SHUCHU,A ;顯示個位
MOV PIANXUAN,#20H ;片選
CALL DELAY ;延時
MOV PIANXUAN,#00
MOV SHUZI,FEN
CALL JISUAN
MOVC A,@A+DPTR
MOV SHUCHU,A ;顯示十位
MOV PIANXUAN,#04H ;片選
CALL DELAY
MOV PIANXUAN,#00
MOV A,B
MOVC A,@A+DPTR
MOV SHUCHU,A ;顯示個位
MOV PIANXUAN,#08H ;片選
CALL DELAY ;延時
MOV PIANXUAN,#00
MOV SHUZI,SHI
CALL JISUAN
MOVC A,@A+DPTR
MOV SHUCHU,A ;顯示十位
MOV PIANXUAN,#01H ;片選
CALL DELAY
MOV PIANXUAN,#00
MOV A,B
MOVC A,@A+DPTR
MOV SHUCHU,A ;顯示個位
MOV PIANXUAN,#02H ;片選
CALL DELAY ;延時
MOV PIANXUAN,#00
RET
;========================計算子程序=============================
;輸入:30H
;輸出:"A和B"
;實現(xiàn)的功能:把30H的數(shù)據(jù)的十位和個位分離出來
;===============================================================
JISUAN:MOV A,SHUZI ;數(shù)據(jù)放在A中
MOV B,#10 ;除數(shù)放在B中
DIV AB ;商放在A中,余數(shù)放在B中
RET
;====================定時中斷0服務子程序========================
;輸入:無
;輸出:無
;實現(xiàn)的功能:實現(xiàn)定時20MS,影響標中斷志位BIT
;===============================================================
T0_1:MOV TL0,50H ;設(shè)置定時初值
MOV TH0,51H
SETB C_0 ;定時標志位清0
RETI
;========================中斷設(shè)置子程序=========================
;輸入:無
;輸出:無
;實現(xiàn)的功能:初始化設(shè)置定時器,設(shè)置初值
;===============================================================
INIT:MOV TMOD,#01H ;定時器0工作方式1
MOV DPTR,#65536-20000
MOV 50H,DPL
MOV 51H,DPH
MOV TL0,50H ;設(shè)置定時初值
MOV TH0,51H
MOV IE,#82H ;開定時器中斷0
SETB TR0 ;開定時器0
RET
;========================延時程序===============================
;輸入;無
;輸出: 無
;實現(xiàn)的功能:延時一段時間
;===============================================================
DELAY:
MOV R6,#80
LL7:MOV R7,#60
DJNZ R7,$
DJNZ R6,LL7
RET
;=====================共陽查表數(shù)據(jù)==============================
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;=======================程序結(jié)束================================
END
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1