跪求用汇编语言编写的七段数码显示管60秒倒计时程序!!
从60秒到30秒再到90秒并循环倒计时显示。
----
有点不好理解。
从60秒到30秒,看来,是倒计时。
到了30之后,怎么办?是立即改为90吗?
到了90之后,再怎么办?是立即改为60吗?
查询方式: ORG 00H START: MOV R0,#20 MOV R4,#60 LP0: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR,#TABLE SETB TR0 LP1: JBC TF0,LP2 ACALL DISP AJMP LP1 LP2: DJNZ R0,LP0 CLR TR0 MOV R0,#20 MOV A,R4 CJNE A,#0,DEC1 MOV R4,#60 AJMP JP1 DEC1: DEC A MOV R4,A JP1: ACALL DISP AJMP LP0 DISP: MOV A,R4 MOV B,#10 DIV AB ;当前值除以10 MOV 20H,A ;得出的商送给十位 MOV 21H,B ;得出的余数送给个位 MOV A,20H ;十位显示 MOVC A,@A+DPTR MOV P0,A SETB P2.1 LCALL DELAY CLR P2.1 MOV A,21H ;个位显示 MOVC A,@A+DPTR MOV P0,A SETB P2.0 LCALL DELAY CLR P2.0 RET DELAY: ;误差 0us MOV R6,#10 DL0: MOV R5,#50 DJNZ R5,$ DJNZ R6,DL0 RET TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极0-9显示代码 DB 92H,82H,0F8H,80H,90H END 中断方式: ORG 00H AJMP MAIN ORG 0BH AJMP T0INT ORG 30H MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H ;50MS一中断 MOV R0,#20 ;20次为1S MOV R4,#60 ;60S开始倒计时 SETB EA SETB ET0 SETB TR0 MOV DPTR,#TABLE MAIN1: ACALL DISP AJMP MAIN1 DISP: MOV A,R4 MOV B,#10 DIV AB ;当前值除以10 MOV 20H,A ;得出的商送给十位 MOV 21H,B ;得出的余数送给个位 MOV A,20H ;十位显示 MOVC A,@A+DPTR MOV P0,A SETB P2.1 LCALL DELAY CLR P2.1 MOV A,21H ;个位显示 MOVC A,@A+DPTR MOV P0,A SETB P2.0 LCALL DELAY CLR P2.0 RET T0INT: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R0,RTI MOV R0,#20 DEC R4 CJNE R4,#0,RTI MOV R4,#60 RTI: RETI DELAY: ;误差 0us MOV R6,#10 DL0: MOV R5,#50 DJNZ R5,$ DJNZ R6,DL0 RET TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极0-9显示代码 DB 92H,82H,0F8H,80H,90H END
ORG 0000HJMP BEGIN
ORG 000BH
LJMP T0INT
ORG 001BH
LJMP T1INT
LEDD EQU 30H
LEDC EQU 36H
SECC EQU 37H
TCNT EQU 3AH
ORG 0030H
;---------------------------------------
TABLE: ; 共阴极数码管显示代码表
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
; DB 3FH,06H,5BH,4FH,66H ;12345
; DB 6DH,7DH,07H,7FH, ;6789
;---------------------------------------
DELAY:
MOV R6,#25
DLY01:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DLY01
RET
;---------------------------------------
BEGIN:
MOV SP,#5FH
MOV TMOD,#11H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0F4H
MOV TL1,#48H
MOV LEDC,#6
MOV R0,#LEDD
CLR A
INIT:
MOV @R0,A
INC R0
DJNZ LEDC,INIT
SETB ET1
SETB TR1
MOV P2,#0
MOV TCNT,#0
MOV SECC,#0
SETB ET0
SETB EA
MOV SECC,#60
LCALL DISSEC
SETB TR0
SETB TR1
LOOP:
SJMP $
;---------------------------------------
T1INT:
PUSH ACC
CLR TR1
MOV TH1,#0F4H
MOV TL1,#48H
SETB TR1
MOV DPTR,#TABLE
MOV R0,#LEDD
MOV A,LEDC
T1INT0:
JNZ T1INT1
MOV P2,#01H
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
SJMP T1INTD
T1INT1:
MOV P2,#02H
INC R0
MOV A,@R0
MOVC A,@A+DPTR
CPL A
MOV P0,A
T1INTD:
INC LEDC
MOV A,LEDC
CJNE A,#2,T1INT6
T1INT6:
JC T1INTE
MOV LEDC,#0
T1INTE:
POP ACC
RETI
;---------------------------------------
HBCD:
MOV B,#10
DIV AB
SWAP A
ORL A,B
RET
;---------------------------------------
T0INT:
PUSH ACC
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC TCNT
MOV A,TCNT
CJNE A,#20,T0INT1
T0INT1:
JC T0INTE
MOV TCNT,#0
MOV A,SECC
DEC A
MOV SECC,A
JNZ T0INT2
MOV SECC,#60
T0INT2:
LCALL DISSEC
T0INTE:
POP ACC
RETI
;---------------------------------------
DISSEC:
MOV A,SECC
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 30H,A
POP ACC
SWAP A
ANL A,#0FH
MOV 31H,A
RET
;---------------------------------------
END
跪求用汇编语言编写的七段数码显示管60秒倒计时程序!!
JMP BEGIN ORG 000BH LJMP T0INT ORG 001BH LJMP T1INT LEDD EQU 30H LEDC EQU 36H SECC EQU 37H TCNT EQU 3AH ORG 0030H ;--- TABLE: ; 共阴极数码管显示代码表 DB 0FCH ;"0" 00H DB 60H ;"1" 01H DB 0DAH ;"2" 02H DB 0F2H ;"3" 03H DB 66H ;"4" 04H D...
计数器计数,七段数码管从0到9循环显示(用汇编语言)
数码管段选表。延时函数。uchari;变量i;wk=1;打开位选,P0=0xf7;11110111第4位数码管显示,wk=0;关闭位选。while(1)\/\/死循环效果{}。新建项目,做好准备。数码管段选表。延时函数。uchari;变量i;wk=1;打开位选,P0=0xf7;11110111第4位数码管显示,wk=0;关闭位选。while(1)\/\/死...
用汇编语言编写七段数码管显示1~9,用8255A接口芯片,用中断方式...
在进行实验时,我们使用了汇编语言编写了一段程序,用于在七段数码管上显示1至9的数字。程序中,我们将数据段中的端口地址进行了调整,以匹配计算机中8255A接口芯片的端口地址。从键盘接收数字后,程序会将其转换为相应的段码,并在数码管上进行显示。首先,程序定义了数据段,并将端口地址进行了相应的...
用汇编语言编写七段数码管显示1~9,用8255A接口芯片,用中断方式...
你知道的,把数据段中的端口地址改为你的计算机可识别的8255A的端口地址 ;从键盘接收数字,在七段数码管上显示 data segment ioport equ 2400h-0280h io8255a equ ioport+288h io8255b equ ioport+28bh led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db 0dh,...
求汇编程序 七段数码管显示从0到9的程序 按键按一下加一 按一下减一...
七段共阳数码管接在P0口,显示从0到9, 按键接P3.2按一下加一, 按键P3.3 按一下减一。程序如下:K1 BIT P3.2 K2 BIT P3.3 START:MOV DPTR,#TABLE MOV R1,#0 MLOOP:MOV A,R1 MOVC A,@A+DPTR MOV P0,A JB K1 ,TK2 CJNE R1,#9,CPM CPM:JNC MLOOP INC R1 JNB K1,...
求一个7段数码管的显示程序
include<reg51.h> define smg P2 unsigned char tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};void main(){ smg=tab[0];} \/\/程序就到这里 tab[]这个中括号里面的数字可以随意为0-9 数码管显示为对应的数字 在前面的数组中已经定义好了共阳数码管的编码 ...
汇编语言程序 使数码管显示1,2,3,4,5,6,7,8
;"4" 04HDB 92H ;"5" 05HDB 82H ;"6" 06HDB 0F8H ;"7" 07HDB 80H ;"8" 08HDB 90H ;"9" 09HDB 88H ;"A" 0AHDB 83H ;"B" 0BHDB 0C6H ;"C" 0CHDB 0A1H ;"D" 0DHDB 86H ;"E" 0EHDB 8EH ;"F" 0FHDB 0FFH ;" " 10H;---END ...
8086单片机七段数码管显示8位16进制计数器的汇编语言程序
8255参考程序 .486 DATA SEGMENT AT 0 USE16 PORTA EQU 203H;A口 PORTB EQU 207H;B口 PORTC EQU 20BH;C口 CONTROL EQU 20FH;控制口 PORT1EQU 340H;七段码段地址 PORT2EQU 360H;七段码位地址 ORG 4200H DATA1DB 6 DUP (?);输入数据区 ORG4210H DATA2DB ...
求数码管静态显示程序,扩展8个七段数码管,显示“12345678“,要汇编...
应该是P2.0-P2.3控制四个位选码 P2.0-P2.78个段选码 使用两个74HC573 锁存器 并另外用两个端口入P1.0 P1.1分别控制段选使能和位选使能 sbit dula=P1^0 sbit wela=P1^1 写程序时,先开位选dula=1 再送数P2=0xxx 关段选dula=0 位选操作如上 请参考 ...
如何用51单片机汇编语言编写一个将十六进制数转换成十进制数,并在七...
KEYVAL EQU 30H DAT EQU 33H SCANLED EQU 39H ORG 0000H LJMP MAIN ORG 001BH LJMP T1ISR ;扫描显示 ORG 0030H MAIN:MOV SP,#5FH MOV TMOD,#10H MOV TH1,#0ECH MOV TL1,#078H MOV 33H,#10H MOV 34H,#10H MOV 35H,#10H MOV 36H,#10H SETB TR1 SETB ET1 SETB EA MOV ...