标题:
关于单片机汇编语言实现进制转换
[打印本页]
作者:
WBSY
时间:
2021-4-29 21:21
标题:
关于单片机汇编语言实现进制转换
今天学习了
中断
,任务是利用中断进行数制转换,
并利用数码管显示转换前后数字、
原理图放下面
PS:本次进制转换为16进制转换为10进制,只是例子
照例先说我的思路:
1. 我在主程序先对
P1
置零(为了让十六进制数从0开始)
2. 然后对
P1
进行加1的操作,并循环以及延时(为了容易看清是否转换)
3. 配置中断,开启外部
中断0
,设置触发方式为
电平触发
,开启
中断总控制
(这里的配置务必跟着自己的电路图来,这里是我电路图对对应的配置)
4. 编写中断子程序,里面对
P1
做除法,除以
0x64H
即
0x100D
配(由于是两位十六进制最多百位数,所以除以100)为了得到百位数,并将
商
移到
P2
(这里刚 好高位为0,不影响)作百位数,并对剩下来的
余数
进行除10得到
新的商
,字节内交换后,将交换后
新商
加上
新的余数
移入
P0
,得到十位数和个位数。
5. 退出中断返回
DIV AB 结果:A/B的商放入A,余数放入B
原理图:
11.png
(42.55 KB, 下载次数: 41)
下载附件
2021-4-29 22:40 上传
代码如下:
ORG 00H
LJMP 30H ;turn to main
ORG 03H
LJMP 0200H
ORG 30H
MAIN: MOV P1, #00H ;hex
MOV P0, #00H ;low2_dec
MOV P2, #00H ;high1_dec
SETB EX0 ;open it
SETB IT0
SETB EA ;open total switch
HERE: INC P1
MOV R7, #0FFH
DJNZ R7, $
SJMP HERE
ORG 0200H
EXCHANGE:
MOV B, #64H ;div with 100 for P2-high1_dec
MOV A, P1
DIV AB
MOV P2, A
MOV A, B ;save remainder;
MOV B, #0AH ;div with 10 for P0-low2_dec
DIV AB
SWAP A
ADD A, B
MOV P0, A
RETI
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1