怎么用汇编语言实现,四位共阳数码管显示16个数据,可以每组4个显示,
KEYVAL EQU 30HDAT EQU 33HSCANLED EQU 39HCLK EQU 77HDISD EQU 78HORG 0000HLJMP MAINORG 0003HLJMP EXTINT0ORG 000BHLJMP T0ISR ;50ms定时ORG 001BHLJMP T1ISR ;扫描显示ORG 0030HMAIN: MOV SP,#5FH MOV TMOD,#11H MOV TH0,#03CH MOV TL0,#0B0H MOV TH1,#0ECH MOV TL1,#078H MOV KEYVAL,#2 MOV 33H,#10H MOV 34H,#10H MOV 35H,#10H MOV 36H,#10H MOV CLK,#0 SETB IT0 SETB EX0 CLR TR0 CLR ET0 MOV R2,#0 MOV DISD,#0 SETB TR1 SETB ET1 SETB EALOOP: MOV A,KEYVALLOOP1: JNZ LOOP2 ;启动 SETB TR0 SETB ET0 SJMP LOOPLOOP2: DEC A JNZ LOOP3 ;暂停 CLR TR0 CLR ET0 SJMP LOOPLOOP3: DEC A JNZ LOOP ;清零 MOV 36H,#0 MOV 35H,#0 MOV 34H,#0 MOV 33H,#0 SJMP LOOPEXTINT0: PUSH ACC INC KEYVAL MOV A,KEYVAL CJNE A,#3,EXT00EXT00: JC EXT01 MOV KEYVAL,#0EXT01: POP ACC RETIT0ISR: PUSH ACC CLR TR0 MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 INC CLK MOV A,CLK CJNE A,#20,T0ISRE MOV CLK,#0 MOV DPTR,#DDAT MOV A,DISD PUSH ACC MOVC A,@A+DPTR MOV 33H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 34H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 35H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 36H,A POP ACC ADD A,#4 CJNE A,#16,CONTINCONTIN: JC CONTIN1 CLR ACONTIN1: MOV DISD,A
T0ISRE: POP ACC RETIT1ISR: PUSH ACC CLR TR1 MOV TH1,#0ECH MOV TL1,#78H SETB TR1 MOV DPTR,#LEDTABT100: MOV R0,#DAT MOV A,SCANLED ADD A,R0 MOV R0,A MOV A,SCANLED JNZ T101 MOV P2,#01H SJMP T1DIST101: DEC A JNZ T102 MOV P2,#02H SJMP T1DIST102: DEC A JNZ T103 MOV P2,#04H SJMP T1DIST103: MOV P2,#08HT1DIS: MOV A,@R0 MOVC A,@A+DPTR CPL A MOV P0,A INC SCANLED MOV A,SCANLED CJNE A,#4,T1END MOV SCANLED,#0T1END: POP ACC RETILEDTAB: 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 ;" " 10HDDAT: DB 1,2,3,4 DB 5,6,7,8 DB 9,10,11,12 DB 13,14,15,0END
用51单片机实现4位共阳数码管动态扫描显示程序,采用74HC573做驱动,定时器T0定时16ms,用来刷新数码管显示屏,软件延时1ms实现数码管亮灭延时,相当稳定,没有一点闪烁的感觉。
KEYVAL EQU 30H
DAT EQU 33H
SCANLED EQU 39H
CLK EQU 77H
DISD EQU 78H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXTINT0
ORG 000BH
LJMP T0ISR ;50ms定时
ORG 001BH
LJMP T1ISR ;扫描显示
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#11H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV TH1,#0ECH
MOV TL1,#078H
MOV KEYVAL,#2
MOV 33H,#10H
MOV 34H,#10H
MOV 35H,#10H
MOV 36H,#10H
MOV CLK,#0
SETB IT0
SETB EX0
CLR TR0
CLR ET0
MOV R2,#0
MOV DISD,#0
SETB TR1
SETB ET1
SETB EA
LOOP:
MOV A,KEYVAL
LOOP1:
JNZ LOOP2 ;启动
SETB TR0
SETB ET0
SJMP LOOP
LOOP2:
DEC A
JNZ LOOP3 ;暂停
CLR TR0
CLR ET0
SJMP LOOP
LOOP3:
DEC A
JNZ LOOP ;清零
MOV 36H,#0
MOV 35H,#0
MOV 34H,#0
MOV 33H,#0
SJMP LOOP
EXTINT0:
PUSH ACC
INC KEYVAL
MOV A,KEYVAL
CJNE A,#3,EXT00
EXT00:
JC EXT01
MOV KEYVAL,#0
EXT01:
POP ACC
RETI
T0ISR:
PUSH ACC
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC CLK
MOV A,CLK
CJNE A,#20,T0ISRE
MOV CLK,#0
MOV DPTR,#DDAT
MOV A,DISD
PUSH ACC
MOVC A,@A+DPTR
MOV 33H,A
POP ACC
PUSH ACC
INC DPTR
MOVC A,@A+DPTR
MOV 34H,A
POP ACC
PUSH ACC
INC DPTR
MOVC A,@A+DPTR
MOV 35H,A
POP ACC
PUSH ACC
INC DPTR
MOVC A,@A+DPTR
MOV 36H,A
POP ACC
ADD A,#4
CJNE A,#16,CONTIN
CONTIN:
JC CONTIN1
CLR A
CONTIN1:
MOV DISD,A
T0ISRE:
POP ACC
RETI
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
SJMP T1DIS
T101:
DEC A
JNZ T102
MOV P2,#02H
SJMP T1DIS
T102:
DEC A
JNZ T103
MOV P2,#04H
SJMP T1DIS
T103:
MOV P2,#08H
T1DIS:
MOV A,@R0
MOVC A,@A+DPTR
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
DDAT:
DB 1,2,3,4
DB 5,6,7,8
DB 9,10,11,12
DB 13,14,15,0
END
汇编语言 编程实现由键盘输入任意一个字符,将该字符的ASCII码值显示在...
DATA SEGMENT DATA1 DB 'PLEASE PUT A CHAR:$'DATA2 DB 0AH,0DH,'THE ASCII OF THE :$'SD DB 'A'DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET DATA1 ;显示提示信息 MOV AH,09H INT 21H MOV AH,01H INT 21H MOV SI,OFFSET SD ...
51单片机编程题,用汇编语言怎么做?
ET0=1; TR0=1;} void timer0() interrupt 1 { TH0 = (65536-500)\/256; \/\/定时器装初值500, 1mS 中断一次 TL0 = (65536-500)%256;CP=~CP; \/\/改变脉冲信号的输出状态 } void main(){ Timer0_init();CP=0;while(1) { } } 汇编语言,才看到,算了,你别人的回答吧 ...
用汇编语言编写一段程序实现两个六位的十进制数的加法,把运算结果显 ...
stack segment para stack 'stack'st1 db 64 dup(?)stack ends data segment num equ 6 ;数字位数(最好为偶数),若为奇数需稍微改动程序 msg1 db 'Enter the first number(ESC to exit) : ','$'msg2 db 'Enter the second number(ESC to exit) : ','$'msg3 db 0dh,0ah,'ERROR...
用汇编语言怎么实现16位的乘除法,例如28H乘以FAH,然后再除以FFH,
如果是你这个数的话就直接用指令可以。MOV A,#28H MOV B,#0FAH MUL AB 结果存在A和B中 如果再除0FFH的话,就没有直接的指令了,相当于16位除以8位。给你一个子程序试试,将被除数赋值给R2R1,除数赋值给B就可以了。这里调用前如下赋值 \/ MOV A,#28H MOV B,#0FAH MUL AB \/ MOV R2,...
汇编语言编写一个程序,实现十进制、十六进制和二进制之间的转换_百度知 ...
CODE SEGMENT ASSUME CS:CODE STRR DB 18 STRRN DB ? STRRS DB 18 DUP(?) START: PUSH CS POP DS PUSH CS POP ES CALL INPUT CALL LFCR CALL
用汇编语言实现从键盘输入两个2位数并进行相加,最后输出结果
;使用PTR转换属性并相加,将十六进制数转化为ASCII表示 DEC BX ; BX减1,修改偏移量 JNZ TRAN_ASCI ; 如果BX未减到零,跳到TRAN_ASCI 执行指令 RET ;返回 ADDA ENDP ;加法子程序定义完成 CODES ENDS ;代码段完成 END START ...
用汇编语言编程,要求实现以下分段函数。
分段函数,参考程序如下:mov A, X cjne A, #11, QQQ ;A 试减11 QQQ: jnc DY6 ;无借位(即大于10)转移.cjne A, #2, AAA ;A 试减2 AAA: jc XY2 ;有借位(即小于1)转移.add A, X add A, X ;A=2X clr C subb A, #1 mov Y, A ;Y = 2X - 1 sjmp _END DY10:add...
用汇编语言编程实现从键盘输入一个字符带回显,并将键盘输入的那个字符...
.MODEL SMALL .DATA .CODE START:MOV AX, @DATA MOV DS, AX MOV AH, 1 INT 21H MOV BL, AL MOV DL, 13 ;回车 MOV AH, 2 INT 21H MOV DL, 10 ;换行 INT 21H MOV DL, BL ;显示 INT 21H MOV AH, 4CH INT 21H END ...
用汇编语言编写实现对于三个8位无符号数81H、52H、15H
ORG 00H MOV A,#81H MOV A,#52H MUL AB ;乘积是16位的,要分两个字节放啊,现在高8位在A里,低8位在;B里。MOV R1,A MOV R2,B MOV A,R2 ADDC A,#15H MOV R2,A ;结果的高8位在R1中,低8位在R2中。;这个是80c51汇编,不是80x86汇编。 这就可以了 END ...
ROM 2000H单元中的内容传送到内部RAM 20H单元中(用汇编语言编写)
以下是将ROM 2000H单元中的内容传送到内部RAM 20H单元中的汇编代码示例:```ORG 0000H ; 程序起始地址为 0000H MOV DPTR, #2000H ; 将 ROM 2000H 单元的地址存入 DPTR MOV A, #0FFH ; 将 A 寄存器赋值为 0FFH MOVX @DPTR, A ; 将 ROM 2000H 单元中的内容传送到 A 寄存器 MOV @20H...
苍梧览参芪: 1、首先我们先打开keil. 2、接着,我们要定义好库函数,void main(){while(1)//不断循环显示{dispaly();}}void dispaly(){P0=smg[1];//选择显示数字几,P1=0x7f;//控制是否点亮数码管. 3、接着,我们加上一条循环语句.delay(5);//显示5...
蓬安县15696279264: 用汇编语言编写一个能显示4位数码的电路,并用8循环显示8遍 - ?
苍梧览参芪: 51的单片机不会!PIC单片机用汇编语言可以实现!简单说说!动态扫描四位数码管,每一位点亮2毫秒,轮流显示,由于人眼视觉延迟,所以感觉不到数码管闪烁,就像同时亮的一样!延时可以用软件延时,也可以用定时器延时!至于循环显示,是不是将四位数码管点亮后,关闭几秒钟,然后再次点亮,如此反复,设定一个计数寄存器,累加或递减均可!如果增加一个模拟输入端,可以做成市面上的四位数显表!作为电压或电流信号终端显示器!
蓬安县15696279264: 51单片机 控制四位数码管 汇编程序 - ?
苍梧览参芪: 哦,,数码管 有共阳极,共阴极的,你是那一种 ;显示缓冲单元在72H—75H DISPLAY:MOV DPTR,#TAB CLR P3.3 MOV A,72H MOVC A,@A+DPTR LOP1:MOV P2,A LCALL DL1MS SETB P3.3 CLR P3.2 MOV A,73H MOVC A,@A+DPTR ...
蓬安县15696279264: 哪位高手帮帮忙帮我编个程序,用8051单片机控制4位LED共阳数码管.. - ?
苍梧览参芪: #include<reg52.h> sbit KEY=P3^3; //定义按键输入端口 sbit LED=P1^2; //定义led输出端口,一个四个都是一样的定义方法 void main (void) {KEY=1; //按键输入端口电平置高 while (1) //主循环{ if(!KEY) //如果检测到低电平,说明按键按下LED=0;elseLED=1; //这里使用if判断,如果按键按下led点亮,否则熄灭//如果需要四个亮就写LED1=1;LED2=1,LED3=1;LED4=1;不过上面得先定义好这四个led的引脚 } }希望对你有帮助
蓬安县15696279264: 汇编语言点亮一个数码管怎么写 - ?
苍梧览参芪: org 0 mov a,#data ;data要显示的数字 add a,#5 ;修正 movc a,@a+dptr ;查段码 mov p1,a ;p1接数码管段选线 sjmp $ tab:db …… ;共阳或共阴段码表 end
蓬安县15696279264: 用单片机控制四位数码管显示“2009 ”的汇编程序 - ?
苍梧览参芪: 要程序,不如学会了 程序也得配合硬件,一般是扫描的动态显示的吧,8位数据口,4位选择线.注意,共阴共阳,送数据的码对应为明码暗码 把数据和选择口都设成输出 段码显示做张表,查询
蓬安县15696279264: 数码管倒计时显示20秒.我的数码管是2个的共阳.用汇编语言 - ?
苍梧览参芪: 直接静态显示吧,不做扫描了,用延时做1S计数,也不做定时了. 共阳的数码管代码从0-9是:3F,06,5B,4F,56,6D,7D,07,7F,6F 你的共阳数码管没有控制阳极的话,复位是全亮的,单片机复位后各IO口都是高电平. P1口是个位 P2口是十位 ...
蓬安县15696279264: 51单片机如何用汇编语言让4个共阴数码管同时显示1234 P3口是片选 P0是段选 - ?
苍梧览参芪: 可以用proteus仿真来实现,用四位一体的共阴数码管.仿真图和显示效果如下图. 汇编程序
蓬安县15696279264: 51单片机怎么控制四位数码管,有没有汇编程序?我只能控制两位!求详解! - ?
苍梧览参芪: display:;显示子程序 mov dptr,#numtab;送数据表 mov a,a_bit;送个位 movc a,@a+dptr;查表 mov p1,a;送p0显示 30 setb p3.7;选中第一个数码管 lcall d1ms;显示1ms cpl p3.7;关显示 mov a,b_bit;送10位数据 35 movc a,@a+dptr;查...
蓬安县15696279264: 4位共阳数码管动态扫描显示汇编程序 吗 - ?
苍梧览参芪: 用51单片机实现4位共阳数码管动态扫描显示程序,采用74HC573做驱动,定时器T0定时16ms,用来刷新数码管显示屏,软件延时1ms实现数码管亮灭延时,相当稳定,没有一点闪烁的感觉.