如何用单片机汇编语言设计一个秒表 单片机秒表设计

如题所述

KEYVAL EQU 30H
DAT EQU 33H
SCANLED EQU 39H
SEC1 EQU 78H
SEC2 EQU 79H
SEC_2 EQU 7AH
SEC_1   EQU 7BH
TCNT    EQU 7CH
DOT BIT 00H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXTINT0
ORG 000BH
LJMP T0ISR ;50ms定时
ORG 0013H
LJMP EXTINT1
ORG 001BH
LJMP T1ISR ;扫描显示
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#11H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
MOV TH1,#0ECH
MOV TL1,#078H
MOV KEYVAL,#0FFH
MOV 33H,#10H
MOV 34H,#10H
MOV 35H,#10H
MOV 36H,#10H
MOV SEC_1,#0
MOV SEC_2,#0
MOV SEC1,#0
MOV SEC2,#0
SETB IT0
SETB EX0
SETB IT1
SETB EX1
CLR TR0
SETB ET0
SETB TR1
SETB ET1
SETB EA
LOOP:
MOV A,KEYVAL
LOOP1:
JNZ LOOP2 ;启动
SETB TR0
SJMP LOOP
LOOP2:
DEC A
JNZ LOOP3 ;暂停
CLR TR0
SJMP LOOP
LOOP3:
SJMP LOOP
;------------------
;十六进制转换为BCD
HBCD:
MOV B,#10
DIV AB 
SWAP A 
ORL A,B
RET 
;--------------------
DELAY:
MOV R3,#50
DELAY1:
MOV R4,#100
DJNZ R4,$
DJNZ R3,DELAY1
DJNZ R2,DELAY
RET
;--------------------
EXTINT0:
PUSH ACC
INC KEYVAL
MOV A,KEYVAL
CJNE A,#2,EXT00
EXT00:
JC EXT01
MOV KEYVAL,#0
EXT01:
POP ACC
RETI
;--------------------
EXTINT1:
CLR TR0
MOV SEC1,#0
MOV SEC_1,#0
MOV SEC2,#0
MOV SEC_2,#0
LCALL DISCHG
RETI
;--------------------
T0ISR:
PUSH ACC
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
INC TCNT
MOV A,TCNT
CJNE A,#20,T0ISRE
MOV TCNT,#0
INC SEC_2
MOV A,SEC_2
CJNE A,#10,T0ISRE
MOV SEC_2,#0
INC SEC_1
MOV A,SEC_1
CJNE A,#6,T0ISRE
MOV SEC_1,#0
INC SEC1
MOV A,SEC1
CJNE A,#10,T0ISRE
MOV SEC1,#0
INC SEC2
MOV A,SEC2
CJNE A,#6,T0ISRE
MOV SEC2,#0
T0ISRE:
LCALL DISCHG
POP ACC
RETI
;--------------------
DISCHG:
MOV 33H,SEC2
MOV 34H,SEC1
MOV 35H,SEC_1
MOV 36H,SEC_2
RET
;--------------------
T1ISR:
PUSH ACC
CLR TR1
MOV TH1,#0ECH
MOV TL1,#78H
SETB TR1
MOV DPTR,#LEDTAB
T100:
MOV R0,#DAT
MOV A,SCANLED
ADD A,R0
MOV R0,A
MOV A,SCANLED
JNZ T101
MOV P2,#01H
CLR DOT
SJMP T1DIS
T101:
DEC A
JNZ T102
MOV P2,#02H
SETB DOT
SJMP T1DIS
T102:
DEC A
JNZ T103
MOV P2,#04H
CLR DOT
SJMP T1DIS
T103:
DEC A
JNZ T1DIS
MOV P2,#08H
CLR DOT
T1DIS:
MOV A,@R0
MOVC A,@A+DPTR
JNB DOT,T1DIS1
ORL A,#01H
T1DIS1:
CPL A
MOV P0,A
INC SCANLED
MOV A,SCANLED
CJNE A,#4,T1END
MOV SCANLED,#0
T1END:
POP ACC
RETI
;--------------------
LEDTAB: DB 0FCH ;"0" 00H
DB 60H ;"1" 01H
DB 0DAH ;"2" 02H
DB 0F2H ;"3" 03H
DB 66H ;"4" 04H
DB 0B6H ;"5" 05H
DB 0BEH ;"6" 06H
DB 0E0H ;"7" 07H
DB 0FEH ;"8" 08H
DB 0F6H ;"9" 09H
DB 0EEH ;"A" 0AH
DB 3EH ;"B" 0BH
DB 9CH ;"C" 0CH
DB 7AH ;"D" 0DH
DB 9EH ;"E" 0EH
DB 8EH ;"F" 0FH
DB 00H ;" " 10H
;--------------------
END
温馨提示:内容为网友见解,仅供参考
无其他回答

利用51单片机设计一个秒表 (一定要按要求做到0.01秒)
wait_key(); TR0 = 0;wait_key(); m[0] = m[1] = m[2] = m[3] = 0;} } void time0() interrupt 1 { counet++;counet %= 40;if(!counet) { m[0]++; m[0] %= 10;if(!m[0]) { m[1]++; m[1] %= 10;if(!m[1]) { m[2]++; m[2] %= 10;if...

单片机秒表设计
用AT89C51设计一个2位的LED数码显示作为“秒表”,这应该是一个仿真题,可用两位一体的共阴数码管,用定时器T0定时,得到1秒计时。

求用单片机设计一个秒表AT89C51
;汇编程序如下。;使用T0定时方式1,每隔50ms中断一次,用于修改时间及显示 ;使用外部中断0、1,用于控制启动和清零 ;=== ORG 0000H AJMP MAIN ORG 0003H AJMP X0_INT ORG 000BH AJMP T0_INT ORG 0013H AJMP X1_INT MAIN:MOV TMOD,#01H ;T0定时方式1 MOV TH0, #(65536-5000...

单片机秒表计时器c语言程序图 需要图和程序
\/\/ (一分钟后自动关闭,可手动关闭)。再次切换,s=0.keyscan(); \/\/s状态切换(0-》1-》2-》0)通过外部中断1实现。display(hour1,minu1,sec1); \/\/闹钟时刻显示 } display(hour0,minu0,sec0);\/\/时钟表显示 while(k) \/*k是秒表状态(0-》1-》2-》0)通过外部中断0实现。0秒表关...

51单片机实现秒表,要求16进制进位
51单片机实现秒表, 0~9、A、b、C、d、E、F,16进制秒表。include<reg52.h> define uint unsigned int define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar bai,shi;uint a1,a2;sbit D1...

单片机编程制作电子秒表能显示分(0-99),秒(0-59)
、位选(决定多位数码管中哪一位显示)、段选(决定数码管显示的数字),另外还有锁存器(教材P36,可通过控制锁存端来改变数据输出的状态)。上周单片机实验课的内容是编一个秒表,在4位数码管中分别显示分和秒还有分秒,即最多可显示“9:59.9”。这里我用两个键实现了秒表的启动\/暂停和清零功能,...

汇编语言 秒表程序设计
add [si+01],01 ;秒位加1 cmp [si+01],0a ;判断是否大于10 jz A7 jmp A9 A7:mov [si+01],00 add [si],01 ;十秒位加1 cmp [si],06 ;判断是否大于6 jz A8 jmp A9 A8:mov [si],00 ;大于60:00重新开始 A9: ret 赋初值程序:first:mov si,...

51单片机 秒表设计
\/\/ 51单片机 秒表,显示时间为0000—9999秒,启动、停止,(停止后再次启动复位)include<reg52.h> define uint unsigned int define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar bai,shi;uint...

单片机怎么设计一个0-9的一位数秒表,用定时器实现 c语言程序及其...
DisplaySecond(second);\/\/调用秒的显示子程序 } } \/\/ \/\/函数功能:定时器T0的中断服务程序 \/\/ void interserve(void ) interrupt 1 using 1 { TR0=0; \/\/关闭定时器T0 int_time ++; \/\/每来一次中断,中断次数int_time自加1 if(int_time==20) \/\/够20次中断,即1秒钟进行一次检测...

51单片机的秒表计时器设计,求大神帮忙设计电路图和C语言程序!!
这个程序可以实现秒的计时,按键控制开始、暂停、清零功能,更多功能自己在看清程序的基础上进行改进。include <reg51.H>sbit P3_5 =P3^5;unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};unsigned char...

相似回答