程序的功能是按k1键计数,并且数字在动态数码管上显示,计数到10以后停止,然后再按k2键以后数码管上数字清零,可以继续按k1重复上述过程。使用的是80c51单片机和74LS138译码器,用了cc的八位动态数码管,电路图应该可以想像。程序如下:
TEMP EQU 22H //用来计数,可以用在10以上更大的数字上
a_bit EQU 20H // a,b分别取十位和个位
b_bit EQU 21H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0S //外部中断0
ORG 0013H
LJMP INT1S //外部中断1
ORG 0100H
MAIN:MOV TMOD,#10H //初始化
MOV TL1,#0B0H
MOV TH1,#3CH //定时器延时
MOV R1,#20
MOV TEMP,#0
MOV DPTR,#TAB
MOV R7,#20
MOV R5,#1
SETB TR1
SETB EA
SETB EX0
SETB EX1
SETB IT1
SETB PX1 //开中
DISPLAY: //显示数字于数码管
CJNE R5,#1,D1 //跳出中断所需
JBC TF1,PTF1
MOV A,TEMP
MOV B,#10
DIV AB
MOV a_bit,A
MOV b_bit,B
MOV A,a_bit
MOVC A,@A+DPTR
CPL A
MOV P0,#0FFH
MOV P0,A
CPL P1.0
LCALL DEL
MOV A,b_bit
MOVC A,@A+DPTR
CPL A
MOV P0,#0FFH
MOV P0,A
CPL P1.0
LCALL DEL
AJMP DISPLAY
PTF1:
MOV TL1,#0B0H
MOV TH1,#3CH
DJNZ R1,DISPLAY
MOV R1,#20
MOV A,a_bit
MOV R0,A
MOVC A,@A+DPTR
CPL A
MOV P0,#0FFH
MOV P0,A
AJMP DISPLAY
DEL:
MOV R3,#0FFH
DJNZ R3,$
RET
INT0S:
INC TEMP
MOV A,#10
SUBB A,TEMP
JZ STOP
RETI
INT1S:
MOV R5,#0 //将r5设为跳出标记,为0时跳出中断0
RETI
STOP:
AJMP DISPLAY
D1: MOV TEMP,#0 //跳出以后清零
MOV R5,#1 //重置标记
AJMP INT0S
TAB:
DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
运行了以后显示到10以后一直不动,按k2没反应,跳不出中断,求纠错
因为要两位扫描显示
追答TEMP EQU 22H //用来计数试试看。
追问关闭和打开外部中断为什么这么用啊
追答你试试看,就知道了。
追问这个不行,定时都去掉了,数码管显示不了
追答没有定时,数码管就显示不了?
你看看下图,本程序,已经运行成功。
为了紧凑一些,改用 P2.0 来驱动位选接口。
显示程序,也要稍做改动,如下:
其它部分,都不变。
并没有使用定时器,显示,也可以了。
单片机80c51,汇编语言。运行一会就出现错误,请高手指教一下
LCALL DL1MS 你这段代码具体实现什么功能我没看出来,我感觉就是那个查表指令有问题,你把那个指令再看一下。
用汇编语言编写80c51单片机程序,求内部RAM中50H~59H十个单元内容的平均...
MUL AB ;A=溢出部分的平均值,肯定小于0FF MOV 5AH,A ;第一部分的平均值p1给5AH MOV A,#6H MOV B,5BH MUL AB ;值给5BH,最大值是3CH,所以不用考虑溢出。ADD A,5CH ;MOV B,#10 DIV AB ;6B+s1的平均值p2 ADD A,5AH MOV 5AH,A ;p1+p2 MOV 5BH,B SJMP END ...
基于80c51单片机的交通灯课程设计汇编语言编程
简单 程序流程如下:开始:绿灯 东西方向南北方向的红灯 延迟30秒 东西方向绿灯“南北方向的红灯已关闭 东西方向的,黄色的光的 南北方向的,黄色的光 BR \/> 5秒延时的东西方向的黄色指示灯熄灭南北方向 黄色指示灯熄灭 的方向,南北方向20秒的延迟一个南北方向绿灯东西方向红灯 绿灯熄灭红灯熄灭东西方向 ...
80c51单片机用汇编语言4个独立按键如何分别控制4个数码管从0到9到0...
汇编程序如下 S1 BIT P3.4 S2 BIT P3.5 S3 BIT P3.6 S4 BIT P3.7 DISM1 EQU 31H DISM2 EQU 32H DISM3 EQU 33H DISM4 EQU 34H START:MOV R0,#7FH CLEAR:MOV @R0,#0 DJNZ R0,CLEAR MAINP:ACALL DISUP;主程序 TEST1:JB S1,TEST2 ACALL DELK4 JB S1...
求大神解答下单片机80c51,下面程序中的一个能够让万年历调时间的代码...
1,我们可以通过这一位判断时钟在单片机系统掉电后是否还正常运行。剩下的7 位高 3 位是秒的十位,低 4 位是秒的个位,这里再提请注意一次,DS1302 内部是 BCD 码,而秒的十位最大是 5,所以 3 个二进制位就够了。second|0x80后面的这个数据使用 | 符号就是把最高位CH变成1.
80c51单片机P1.0--P1.7八灯循环程序。
汇编:ORG 00H MOV P2,#80H START:MOV A,#0FFH ;赋初值 CLR C MOV R2,#8 LOOP:RRC A ;带进位右移 MOV P1,A CALL DELAY DJNZ R2,LOOP MOV R2,#7 LOOP1:RLC A ;带进位左移 MOV P1,A CALL DELAY DJNZ R2,LOOP1 JMP START DELAY:MOV R3,#20 ;延时0.2秒 D1:MOV R4,#20 D2...
单片机80c51用汇编语言写让蜂鸣器发出一长三短声的程序
复位用一个电阻和一个电解电容串联后一头接地一头接vcc.如果你的单片机是高电平复位,那电阻大接地,如果是低电平复为,那电阻接vcc.蜂鸣器有两种,一种接地和vcc和就会响.一种是一端接地,在另一端加一个方波脉冲它才会响,调节脉冲占空比可以调节发出的声音.
求助:关于80C51单片机简易计算器设计的程序,要求是汇编语言。谢谢哈
SJMP LD1 ;跳去再显示下一个数LD2:RET ;发完6个数就返回TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,80H,90H,0FFH ;共阳极译码表DELAY1ms:MOV R6,#2LOOP1:MOV R7,#248 NOPLOOP2:DJNZ R7,LOOP2 DJNZ R6,LOOP1 RETKEY:LCALL KS ;调用检测按键子程序 JNZ K1 ;有键按下继续 LCALL DE...
80C51单片机问题,看不懂程序,求讲解,字有点多
在word里答的,复制过来就变了,粘点图片吧,你很认真,加油!
求:单片机80c51怎么做脉冲信号发生器
程序思路说明:只需要4个按键。关于频率和占空比的确定,对于12M晶振,输出频率为1KHZ,这样定时中断次数设定为 10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样可以设 定占空比可从1-99%变化。即0.01ms*100=1ms \/ include<regx51.h> define uchar unsigned char define ...