求大神帮忙说一下这个电子钟的程序详细说明解释(汇编语言的)

ms50 DATA 31H
sec DATA 32H
min DATA 33H
hour DATA 34H
buffer DATA 35H
EXTRN CODE(Display8)
ORG 0000H
LJMP STAR
ORG 000BH
LJMP INT_Timer0
ORG 0100H
STAR: MOV SP,#60H
MOV ms50,A
MOV hour,#12
MOV min,#59
MOV sec,#50
MOV TH0,#60
MOV TL0,#176
MOV TMOD,#1
MOV IE,#82H
SETB TR0
STAR1: LCALL Display
JNB F0,$
CLR F0
SJMP STAR1
;中断服务程序
INT_Timer0: MOV TL0,#176-5
MOV TH0,#60
PUSH 01H
MOV R1,#ms50
INC @R1
CJNE @R1,#20,ExitInt
MOV @R1,#0
INC R1
INC @R1
CJNE @R1,#60,ExitInt1
MOV @R1,#0
INC R1
INC @R1
CJNE @R1,#60,ExitInt1
MOV @R1,#0
INC R1
INC @R1
CJNE @R1,#24,ExitInt1
MOV @R1,#0
ExitInt1: SETB F0
ExitInt: POP 01H
RETI
HexToBCD: MOV B,#10
DIV AB
MOV @R0,B
INC R0
MOV @R0,A
INC R0
RET
Display: MOV R0,#buffer
MOV A,sec
ACALL HexToBCD
MOV @R0,#10H
INC R0
MOV A,min
ACALL HexToBCD
MOV @R0,#10H
INC R0
MOV A,hour
ACALL HexToBCD
MOV R0,#buffer
LCALL Display8
RET
END

ms50 DATA 31H ;50ms计数内存地址sec DATA 32H ;秒计数内存地址min DATA 33H ;分计数内存地址hour DATA 34H ;时计数内存地址buffer DATA 35H ;显示十进制内存起始地址EXTRN CODE(Display8) ;外部显示子程序(跟硬件设计有关,原文未列出) ORG 0000H ; LJMP STAR ;转主程序 ORG 000BH ; LJMP INT_Timer0 ;转50ms定时器中断处理程序ORG 0100H ;STAR: MOV SP,#60H ;主程序 MOV ms50,A ;50ms计数器初始化到0 MOV hour,#12 ;小时初始化为12 MOV min,#59 ;分钟初始化为59 MOV sec,#50 ;秒初始化为50 MOV TH0,#60 ;初始化定时器T0为50ms的数据(跟时钟频率和定时器模式有关) MOV TL0,#176 ; MOV TMOD,#1 ;初始化定时器模式 MOV IE,#82H ;设定中断 SETB TR0 ;开定时器0STAR1: LCALL Display ;调用显示转换程序(先将16进制转为BCD码再显示) JNB F0,$ ;等待中断处理完成标志 CLR F0 ;复位中断处理完成标志
SJMP STAR1 ;循环显示;中断服务程序 INT_Timer0:
MOV TL0,#176-5 ;50ms定时器计数器初始值再装入(-5为微调,含响应中断用时) MOV TH0,#60 ; PUSH 01H ;压入堆栈 MOV R1,#ms50 ;装入50ms计数内存地址数31H INC @R1 ;50ms计数内存加1
CJNE @R1,#20,ExitInt ;不够1秒,退出 MOV @R1,#0 ;50ms计数内存复位为0(31H)
INC R1 ;转为秒内存地址(32H)
INC @R1 ;秒计数内存加1 CJNE @R1,#60,ExitInt1 ;不够60秒,退出 MOV @R1,#0 ;够60秒,秒计数复位为0 INC R1 ;转为分计数内存地址(33H)
INC @R1 ;分计数内存加1 CJNE @R1,#60,ExitInt1 ;不够60分,退出 MOV @R1,#0 ;够60分,分复位为0 INC R1 ;转为时内存地址(34H) INC @R1 ;时计数内存加1 CJNE @R1,#24,ExitInt1 ;不够24时,退出 MOV @R1,#0 ;时计数内存复位为0ExitInt1:
SETB F0 ;置位中断处理完成标志ExitInt:
POP 01H ; 恢复现场 RETI ;退出中断
HexToBCD: ;16进制转BCD码
MOV B,#10 ; DIV AB ; MOV @R0,B ;存余数(10进制个位) INC R0 ;转伤地址 MOV @R0,A ;存伤(10进制十位) INC R0 ;转下一次余数地址 RET ;
Display: ;显示转换与调用显示程序
MOV R0,#buffer ;10进制BCD秒显示缓存地址(35H) MOV A,sec ; ACALL HexToBCD ;十进制秒转换后存在(35H)、(36H) MOV @R0,#10H ;(37H)=#10H,秒与分之间的间隔,无实际意义,或与dispaly8有关
INC R0 ;10进制BCD分显示缓存地址(38H)
MOV A,min ; ACALL HexToBCD ;十进制分转换后存在(38H)、(39H)
MOV @R0,#10H ;(3AH)=#10H,分与时之间的间隔,无实际意义,或与dispaly8有关
INC R0 ;10进制BCD时显示缓存地址(3BH)
MOV A,hour ; ACALL HexToBCD ;十进制时转换后存在(3CH)、(3DH)
MOV R0,#buffer ;恢复显示缓存地址(35H),为dispaly8置初始显示地址 LCALL Display8 ;调用实际显示程序 RET ; END追问

你好,我想问一下,ORG 0100H是赋谁的初始地址? 还有TL0,#176是什么意思,为什么是176?我不理解

温馨提示:内容为网友见解,仅供参考
无其他回答

求大神帮忙说一下这个电子钟的程序详细说明解释(汇编语言的)
外部显示子程序(跟硬件设计有关,原文未列出)ORG0000H ;LJMPSTAR ;转主程序ORG000BH ;LJMPINT_Timer0 ;转50ms定时器中断处理程序ORG0100H ;STAR:MOVSP,#60H ;主程序MOVms50,A ;50ms计数器初始化到0MOVhour,#12 ;小时初始化为12MOVmin,#59 ...

独立按键调节数码管电子钟
这个电子钟程序已经基本符合你的要求。希望能对你有用。程序说明:显示的时间格式为:12-00-00,既,时-分-秒 按键说明:P3.2为时调节。P3.3为分调节。P3.4为秒调节。这三个按键均是每按一次加一。晶振说明:12MHZ 数码管说明:共阳数码管。共8个数码管。共用了两个4连共阳数码管。其中,P0...

求一个用汇编语言编写一个8051单片机的时钟程序(急急急啊)
给你当参考...不足功能自己改...有问题再发问..;P1.4小时调整 P1.5分种调整 CODE_SEG SEGMENT CODE DATA_SEG SEGMENT DATA STACK_SEG SEGMENT IDATA K1 BIT P1.4 K2 BIT P1.5 RSEG DATA_SEG KEY_S: DS 1 KEY_V: DS 1 DIS_DIGIT: DS 1 SEC: DS 1...

用汇编语言做单片机时钟显示
基于c8051f020单片机最小系统的实时时钟显示程序 c8051f020 FYD12864-0402B LCD显示,按键电子时钟\/\/ include <c8051f020.h> include<lcd.h> include <intrins.h> define uchar unsigned char void lcd_ini();void DISPInitial();void ascii_change(void);void delay();void wri_add(uchar com);void...

哪位大神能帮我写一个基于单片机C51的电子时钟设计报告?
3、程序框图:6. 汇编源程序 HOURK BIT P1.2 MINITEK BIT P1.1 SECONDK BIT P1.0 SECOND EQU 30H MINITE EQU 31H HOUR EQU 32H ORG 00H LJMP START ORG 0BH LJMP INT_T0 ORG 0030H START:MOV SECOND,#00H MOV MINITE,#00H MOV HOUR,#12 MOV R0,#00...

用汇编语言编写一个数字电子钟程序代码
;***定义0-9十个图形数字 s0 db 6 db 5fh,7,0,0 db 7ch,7,1,-1 db 7ch,7,1,0 db 5fh,7,0,1 db 7ch,7,0,1 db 7ch,7,-1,0 sy db 2 db 7ch,7,1,0 db 7ch,7,1,0 s2 db 5 db 5fh,7,0,0 db 7ch,7,1,1 db 5fh,7,0,-1 db 7ch,7,1,-1 db ...

用51单片机做一个LED显示的电子钟
用89C51设计LED电子钟 6个数码管显示时分秒,要求通过键盘输入初值,打上开关K1时允许设定时间,按下开关K1时开始运行显示时间,K2用做选择是24小时制还是12小时制答得正确又快的可以获得额外加分~要汇编语言的= = 展开  我来答 1个回答 #热议# 已婚女性就应该承担家里大部分家务吗?hunt...

高分求一个汇编语言的完整程序!
从键盘输入时间初始值后,用固定时间产生0.1s定时中断,触发时钟记数器记数,并将数值实时送显示器显示。ORG 0030H CHK00: MOV SP,#60H LCALL LEDP MOV DPTR,#CLOCK MOV R0,DPL MOV R1,DPH MOV DPTR,#000BH MOV A,#02H MOVX @DPTR,A INC DPTR MOV A,R1 MOVX...

用单片机汇编语言编个程序 像调电子钟 按下设定键 分 数码管闪烁 闪烁...
ORG 0000H AJMP START ORG 000BH AJMP JISHU ORG 001BH AJMP MID ORG 0100H START:MOV SP,#80H CLR RS0 CLR RS1 MOV DPTR,#COM8155 MOV A,#03H ;8155初始化 MOVX @DPTR,A ;---开始充气检测--- BEGIN:MOV 20H,#17H MOV 21H,#3BH MOV 22H,#00H MOV 23H,#00H MOV 24H,#0...

利用定时器定时方式,编写一个电子时钟的程序,要求在数码管上显示:时分...
利用定时器定时方式,编写一个电子时钟的程序,要求在数码管上显示:时分秒。利用外部中断按键 key1给电子时钟对时,当按下key1时,进入对时功能,此时数码管上显示“00-00-00”,通过按key2选 择时分秒的对时。通过按下key3按键,可以让时分秒从“00”... 展开 ...

相似回答