单片机汇编语言8只数码管显示1-8

 我来答
匿名用户
推荐于2017-12-16
展开全部

1、 数码管显示演示程序: 在8个LED数码管上依次显示1,2,3,4,5,6,7,8。引用端口:数码管数据p0,数码管控制p2;

DIS_DIGIT EQU   40H
;位选通值, 传送到P2口用于选通当前数码管的数值,
; 如等于0xfe时, 选通P2.0口数码管
DIS_INDEX DATA   41H
;显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
DIS_BUF DATA   50H
;显于缓冲区起始地址
ORG  0000H
AJMP   MAIN
ORG   000BH
AJMP  INTT0
ORG   0100H
MAIN:MOV  P0,#0FFH; 初始化I/O口
MOV  P2,#0FFH
MOV   TMOD, #02H;定时器0在模式2下工作 
MOV   TL0, #38H; 每200μs产生一次溢出
MOV   TH0, #38H;自动重装初值
SETB   ET0 ;使能定时器0中断
SETB  TR0;启动定时
SETB  EA ;使能总中断
MOVDPTR, #DIS_CODE; 设定显示初值为1-8
MOVA,#1;初值为1,以后顺序加1
MOVC A,@A+DPTR
MOV  DIS_BUF,A
MOVA,#2
MOVCA,@A+DPTR
MOV  DIS_BUF+01H,A
MOVA,#3
MOVCA,@A+DPTR
MOV  DIS_BUF+02H,A
MOVA,#4
MOVCA,@A+DPTR
MOV  DIS_BUF+03H,A
MOVA,#5
MOVCA,@A+DPTR
MOV  DIS_BUF+04H,A
MOVA,#6
MOVCA,@A+DPTR
MOV  DIS_BUF+05H,A
MOVA,#7
MOVCA,@A+DPTR
MOV  DIS_BUF+06H,A
MOVA,#8
MOVCA,@A+DPTR
MOV  DIS_BUF+07H,A
DISPLAY:MOV  DIS_DIGIT,#0FEH; 初始从第一个数码管开始扫描
MOV  DIS_INDEX,#0
SETB TR0; 启动定时器0,开始动态扫描显示
MAIN_LP:NOP
; 主程序循环,可增加其它代码以改变50H-57H中的值以改变显示内容
SJMP MAIN_LP
;=====================================================
INTT0:
; 定时器0中断服程序, 用于数码管的动态扫描

PUSH ACC
PUSH PSW
MOV  P2,#0FFH; 先关闭所有数码管
MOV  A,#DIS_BUF; 获得显示缓冲区基地址
ADD  A,DIS_INDEX; 获得偏移量
MOV  R0,A; R0 = 基地址 + 偏移量
MOV  A,@R0; 获得显示代码
MOV  P0,A; 显示代码传送到P0口
MOV  P2,DIS_DIGIT; 
MOVA,DIS_DIGIT
; 位选通值左移, 下次中断时选通下一位数码管
RL    A
MOVDIS_DIGIT,A
INCDIS_INDEX
; DIS_INDEX加1, 下次中断时显示下一位
ANLDIS_INDEX,#0x07
; 当DIS_INDEX等于8(0000 1000B)时, 清0
POP  PSW
POP  ACC
RETI 
DIS_CODE: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah
DB 20h,60h,30h,25h,0a9h,26h,0a1h,0b1h
;0-9和ABCDEF的数码管显示代码
 
END
迪凯特科技(北京)有限公司
2023-07-28 广告
单片机的UART口通信速度通常取决于以下几个因素:1. 硬件规格:不同的单片机UART接口具有不同的最大传输速率,通常在数百Kbps到数Mbps的范围内。例如,某些常见的单片机,如STM32F103C8T6,其UART接口的最大传输速率可达... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式