标题:
最简单的单片机数字钟汇编程序+电路图
[打印本页]
作者:
daniu
时间:
2014-12-27 17:09
标题:
最简单的单片机数字钟汇编程序+电路图
;===============================================================
;程序编写人:张培、兰建文
;编写地点:51hei单片机培训机构
;时间:2009年6月19日下午 星期四
;功能:本程序实现工业控制数字钟功能。
;P3口实现对数码管的片选功能
;==========================开始初始化===========================
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"
;输出:无
;实现的功能:时分秒的计算。
;===============================================================
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口"
;实现的功能:把A的数输出到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"
;实现的功能:把30H的数据的十位和个位分离出来
;===============================================================
JISUAN:MOV A,SHUZI ;数据放在A中
MOV B,#10 ;除数放在B中
DIV AB ;商放在A中,余数放在B中
RET
;====================定时中断0服务子程序========================
;输入:无
;输出:无
;实现的功能:实现定时20MS,影响标中断志位BIT
;===============================================================
T0_1:MOV TL0,50H ;设置定时初值
MOV TH0,51H
SETB C_0 ;定时标志位清0
RETI
;========================中断设置子程序=========================
;输入:无
;输出:无
;实现的功能:初始化设置定时器,设置初值
;===============================================================
INIT:MOV TMOD,#01H ;定时器0工作方式1
MOV DPTR,#65536-20000
MOV 50H,DPL
MOV 51H,DPH
MOV TL0,50H ;设置定时初值
MOV TH0,51H
MOV IE,#82H ;开定时器中断0
SETB TR0 ;开定时器0
RET
;========================延时程序===============================
;输入;无
;输出: 无
;实现的功能:延时一段时间
;===============================================================
DELAY:
MOV R6,#80
LL7:MOV R7,#60
DJNZ R7,$
DJNZ R6,LL7
RET
;=====================共阳查表数据==============================
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;=======================程序结束================================
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1