二进制,十进制,十六进制,ASCII,BCD码的转换,单片机

更新时间:2024-01-28 07:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.在片内RAM 30H单元有-个8位二进制数,将其转换成压缩BCD码,存于片内RAM 41H(高位)40H(低位)中。方法:2^8=256,所以8位二进制

A<=256,A/100商是百位数,存放到41h单元,余数再除以10,再得商是10位数,高低位互换,) ORG 0100H START:

MOV A,30H ;取来8位二进制数 MOV B,#100

DIV AB ;除以100

MOV 41H,A ;商是百位数,存放到41h单元

1010 (A) 41H 1111 (F) 46H ORG 1000 BTOASC: PUSH ACC PUSH PSW OV A , R0

ANL A , #0FH ;取四位二进制数

MOV R0 , A 暂存 CLR C

SUBB A , #0AH ;与10比较

MOV A , R0 ;恢复四位二进制数 DB ‘0123456789ABCDEF';定义数字对应的ASCII表

BINTOHEX:

MOV DPTR,#ASCIIT

MOV B, A ;暂存A SWAP A

ANL A,#0FH ;取高四位 MOVC A,@A+DPTR ;查ASCII表 MOV RESULT, A

MOV A,B ;恢复A

ANL A,#0FH ;取低四位 MOVC A,@A+DPTR ;查ASCII表 MOV A,B ;取回余数 MOV B,#10

DIV AB ;再除以10

SWAP A ;商是10位数,高低位互换 ORL A,B

MOV 40H,A ;将十位数与个位位数存入40h

SJMP $ END

2.一个字节(8位)BCD码转换为二进制数(方法:先将高半字节乘以10,再加上低半字节)设待转换的BCD码存放于R2中

DTOB:MOV A,R2 ANL A,#0F0H SWAP A MOV B,#0AH MUL AB MOV R3,A MOV A,R2 ANL A,#0FH ADD A,R3 RET3.二进制数转换为ASCII码

设(30H)=4BH,将高4位的ASCII码放在31H单元,低4位的ASCII码放在32H单元,程序具有通用性,向入口参数30H存入任何数,都能将其变成相应的ISCII码.

ORG 0000H

LJMP MAIN ORG 0030H MAIN:MOV SP,#60H MOV 30H,#4BH MOV R2,30H MOV A,R2 ANL A,#0FH

CJNE A,#0AH,NEQ NEQ: JC LOOP ADD A,#37H JMP LOOP3 LOOP:ADD A,#30H LOOP3:MOV 31H,A MOV A,R2 SWAP A

ANL A,#0FH

CJNE A,#0AH,NE1 NE1: JC LOOP1 ADD A,#37H JMP LOOP4 LOOP1:ADD A,#30H LOOP4:MOV 32H,A A1: SJMP A1 END

4.已知R0的低半个字节为一个四位的二进制数,要求将其转换为ASCAII码后送回R0中。 二进制数与ASCII码的对应关系: 四位二进制 ASCII 0000 (0) 30H 0001 (1) 31H 1001 (9) 39H

JC LOOP ;小于10转LOOP ADD A , #07H ;大于10先加07H LOOP: ADD A , #30H ;加30H MOV R0 , A ;存结果 POP PSW POP ACC RET

5.一位十六进制数转换成ASCII码 (方法:将十六进制数减10,余数为负数时进位C=1,判断数值在0—9之间,直接加30H;余数为正数时进位C=0,判断数值在A—F之间,先加上07H,再直接加30H)

ORG 0000H MOV R2,#0CH MOV A,R2 CLR C

SUBB A,#0AH ; 余数为负数时进位C=1, 判断数值在0—9之间;余数为正数时进位C=0,判断数值在A—F之间 MOV A,R2 JC ADD30 ADD A,#07H ADD30:ADD A,#30H MOV R2,A NOP END

6.将多位数十六进制数转换成ACAII码 (方法:查表法)设地址指针R0指向十六进制数低字节,R2存放字节数n,转换后地址指针R0指向十六进制数高字节,R1指向要存放的ASCII码的高位地址

ORG 0021H TAB2:DB

01H,03H,04H,06H,09H,0AH,0CH,08H,0EH,02H

MOV R0,#30H MOV R2,#10 HTASC:MOV A,@R0 ANL A,#0FH ADD A,#15H MOVC A,@A+PC MOV @R1,A INC R1 MOV A,@R0 SWAP A ANL A,#0FH ADD A,#06H MOVC A,@A+PC MOV @R1,A INC R0 INC R1 DJNZ R2 ,HTASC ASCTAB:DB

30H,31H,32H,33H,34H,35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H

7.BCD码换为ACAII码

1.源程序

RESULT EQU 30H ;等值伪指令 ORG 0

LJMP START ASCIIT:

MOV RESULT+1,A RET

START: MOV SP,#40H MOV A,#12H CALL BINTOHEX LJMP $ END

给出要转换数BCD码 取出BCD码高四位 查表得到ASCII码 保存高位ASCII码 取出BCD码低四位 查表得到ASCII码 保存低位ASCII码 结束 1

一、选择题。

1. 十进制0.625转换成二进制数是( A ) A 0.101 B 0.111 C 0.110 D 0.100 2.控制串行口工作方式的寄存器是( C ) (A) TCON (B) PCON (C) SCON (D)TMOD

3.MCS-51的中断允许触发器内容为83H,CPU将响应的中断请求是( B ) (A)0003H (B)2000H (C)000BH (D)3000H 6.MCS-51有中断源( A )

(A)5个 (B)2个 (C)3个 (D)6个 7.MCS-51上电复位后,SP的内容是:(B)

(A)00H (B)07H (C)60H (D)30H

(A) T1, (B)T0,T1 (C)T1,串行接口 (D) T0

4.执行MOVX A,@DPTR指令时,MCS-51产生的控制信号是(C) (A)/PSEN (B)ALE (C)/RD (D)/WR 5. ORG 000BH LJMP 3000H ORG 0003H LJMP 2000H

当CPU响应外部中断0后,PC的值是( B )

二、填空题。

1.微处理器有 运算器 、 控制器 和若干寄存器组成。

2.MCS-51中凡是字节地址能够被 8 整除的SFR均能位寻址。 3.计算机的系统总线有地址总线、 控制总线 和数据总线。

4.MCS-51有 5 个中断源,有 2 个中断优先级,优先级由软件填写特殊功能寄存器 IP 加以选择.

5.微机与外设间交换信息方式有程序控制方式(无条件传送方式和 查询传送方式 )、中断传送方式、 直接数据通道传送DMA 。

三、判断题。

1.我们所说的计算机实质上是计算机的硬件系统与软件系统的总称( √ )

2.要进行多机通信,MCS-51串行接口的工作方式应为方式1。 ( × ) 3.MCS-51外部中断0的入口地址是0003H。 (√ ) 4.MCS-51的特殊功能寄存器分布在60H~80H地址范围内。(× ) 5.PC存放的是当前执行的指令。( × )是将要执行的下一条指令的地址。 6.MCS-51外扩I/O口与外RAM是统一编址的。 ( √ )。

四、简答题。

1、什么是单片机?简述单片机的应用领域。

答:单片微型计算机简称单片机,它是把微型计算机的各个功能部件:中央处理器CPU、随机存储器RAM、只读存储器ROM、定时/计数器及I/O接口电路等集成在一块芯片上,构成一个完整的微型计算机。

应用领域:(1)单片机在智能仪器仪表中的应用;(2)单片机在工业控制中的应用;(3)单片机在计算机网络与通信技术中的应用;(4)单片机在日常生活及家电中的应用。 2、什么叫中断?中断有什么特点?

答:(1)“中断”是指计算机在执行某段程序的过程中,由于计算机系统内、外的某种原因,当出现CPU以外的某种情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再返回继续执行原来被中断的程序。 (2)特点:分时操作;实时处理;故障处理。

3. MCS-51指令系统主要有哪几种寻址方式?试举例说明。 答:MCS-51指令操作数主要有以下7种寻址方式: 寻址方式 举例

立即寻址 MOV A,#16 直接寻址 MOV 20H,P1

五、编程题。

1.编写程序,查找在内部RAM的20H~50H单元中出现00H的次数,并将查找的结果存入51H单元。(5分) 解: MOV R2,#31H MOV R0,#20H MOV 51H,#00H LOOP: MOV A,@R0 ANL A,#0FFH JNZ L1 INC 51H L1: INC R0 DJNZ R2,LOOP RET

2. 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.

解 START: MOV R0,#40H ;数据块首地址送R0 MOV R7,#09H ;比较次数送R7 MOV A,@R0 ;取数送A LOOP: INC R0

MOV 30H,@R0 ;取数送30H

CJNE A,30H,NEHT ;(A)与(30H)相比 NEXT: JNC BIE1 (A)≥(30H)转BIR1 MOV A,30H ;(A)<(30H),大数送A

BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较

8.能够用紫外光擦除ROM中程序的只读存储器称为( C )。 A.掩膜ROM B.PROM C.EPROM D.EEPROM 9.定时器/计数器工作方式1是( C )。

A.8位计数器结构 B.2个8位计数器结构 C.13位计数结构 D.16位计数结构

10.MCS-51单片机的位寻址区位于内部RAM的( D )单元。 A. 00H—7FH B. 20H—7FH C. 00H—1FH D. 20H—2FH

6.当使用慢速外设时,最佳的传输方式是 中 断

7.MCS-51单片机中,内部RAM有4组工作寄存器,它们由PWS特殊功能寄存器中的 RS0、RS1 位来选择用哪一组。

8、8031的异步通信口为 全双工 (单工/半双工/全双工) 9、如果(A)=34H,(R7)=0ABH,执行XCH A, R7;结果(A)= 0ABH , (R7)= 34H 。

10.访问片外程序存储器MOVC指令采用的是 变址 寻址方式。

7.MCS-51的特殊功能寄存器分布在60H~80H地址范围内。(× )80H~FFH。 8.MCS-51的相对转移指令最大负跳距是128B。(√)

9.调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与PC无关。(×)子序的转返与PC也有关(PC入栈与出栈) 10.MCS-51的程序存储器只是用来存放程序的。(×)存放程序和表格常数

寄存器寻址 MOV A,R0 寄存器间接寻址 MOVX A, @DPTR 变址寻址 MOVC A, @A+DPRT 相对寻址 SJMP LOOP 位寻址 ANL C,70H 4.设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?

MOV R0,#30H ;R0=30H MOV A,@R0 ;A=5AH MOV R1,A ;R1=5AH MOV B,R1 ;B=5AH MOV @R1,P1 ;(5AH)=7FH MOV A,P1 ;A=7FH MOV 40H,#20H ;(40H)=20H MOV 30H,40H ;(30H)=20H 解:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。 MOV 50H,A ;比较结束,大数送50H RET

2

本文来源:https://www.bwwdw.com/article/p0lw.html

Top