云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 单片机复习材料

单片机复习材料

  • 62 次阅读
  • 3 次下载
  • 2025/6/25 20:51:20

3.11将内部RAM的20H单元中的十六进制数变换成ASCII码存入22H,21H单元中,高位存入22H单元中,要求用子程序编写转换部分。 答:

ORG 0000H

MOV A,20H ASCII:CJNE A,# 0AH,NE ANL A,# 0F0H NE:JC A30

SWAP A ADD A,#37H ACALL ASCII RET

MOV 22H,A A30:ADD A,30H MOV A,20H RET ANL A,#0FH END ACALL ASCII MOV 21H,A SJMP $

3.12 编写一段程序,以实现图3-8中硬件的逻辑运算功能。

20H(位) ﹠ ≥1 P1.0

﹠ 1 2FH(位) 53H(位)

答:

ORG 0000H MOV C,20H ANL C,2FH ORL C,/2FH CPL C

ANL C,53H MOV P1.0,C SJMP $ END

3.13 用位操作指令实现下面的逻辑方程(×表示逻辑乘,+表示逻辑加) 答:

ORG 0000H MOV C,ACC.3 ANL C,P1.4 ANL C,/ACC.5 MOV 20H,C MOV C,B.4

CPL C

ANL C,/P1.5 ORL C,20H MOV P1.2,C SJMP $ END

3.14 试编写一个3字节无符号数乘1字节的乘法程序。 答:

ORG 0000H MOV R7,#03H MOV R0,#data MOV R2,#0

NEXT:MOV A,@R0 MOV B,R1

MUL AB ADD A,R2 MOV @R0,A MOV A,#0 ADDC A,B MOV R2,A

INC R0

DJNZ R7,NEXT MOV @R0,B SJMP $ END

4.4 编程将8XX51的内部数据存储器20H单元和35H单元的数据相乘,结果存到外部数据存储器中(位置不固定)。 答:

main() p2=0x35; {char data *p1,*p2; a=*p1*(*p2); xdata int a; }

p1=0x20;

4.5 讲将如下汇编程序译成C程序(等效即可)ORG 0000H SJMP $ CLR P1.0 MOV P1,#04H TLC:MOV A,#0 DJNZ R5,LOOP MOV R6,#0AH MOV @R0,A CLR P1.3 MOV R0,#30H MOV R5,#08 INC R0

LOOP:MOV C,P1.2 DJNZ R6,TLC2543 CLR P1.0

SETB P1.3 RLC A RET ACALL TLC SETB P1.0 END 答:

#include﹤reg51.h﹥ P1=0x04; For(i=0;i<8;i++) #define uchar unsigned char P=0x30; {P1_1=msb; sbit P1_0=P1^0; P1_0=0; y=ACC<<1; sbit P1_1=P1^1; P1_3=1; 1sb=P1_2; sbit P1_2=P1^2; for(i=0;i<10;i++) P1_0=1; sbit P1_3=P1^3; {*P=tlc(); P1_0=0; sbit msb=ACC^7; P++;} } sbit 1sb=ACC^0; } return y; uchar tlc(void); uchar tlc(void) } main() {uchar i,y; {uchar*P; ACC=0;P1_3=0;

4.6 8051的片内数据存储器25H单元中放有一个0~10的整数,编程求其平方根(精确到5位有效数字),将平方根放到30H单元为首址的内存。 答:

#include P1=0x25; Main() *P2=sqrt(*P1); {float*P2; } Char*P1;

4.7 完成逻辑表达式P1.2=P1.4×ACC.0+ACC.7(“×”表示逻辑与,“+”表示逻辑或)。 答:

#include sbit P12=P1^2; main()

{P12=~(P1^4&ACC^0|ACC^7;)

4.8 将外部RAM的10H~15H单元的内容传送到内部RAM的10H~15H单元。 答:

#include P2=0; main(){ for(m=0x10;m<=0x15;m++) char pdata*m; {n=m;*n=*m;} char data*n; }

4.9 内部RAM的20H、21H和22H、23H单元分别存放着两个无符号的16位数,将其中的大数置于24H和25H单元。 答:

#define unit unsigned int m=0x20;n=0x22;P=0x24; main(){ if(*m<*n)*P=*n; uint data*m,*n=,*p; else*P=*m; for(;;){ }}

4.10 将内部RAM21H单元存放的BCD码转换为二进制存入30H为首址的单元,BCD码的长度存放在20H单元中。 答: main() for(i=0;i<*P1;i++){ int data a=0,*P3; a=a*10+*P2; char i,*P1,*P2; P2++; P1=0x20; } P2=0x21; *P3=a; P3=0x30; }

4.11 将内部RAM30H单元存放的2字节二进制数转换为二进制数存放于21H为首的单元中,长度存放于20H单元中。 答: main() {*P2=a/k; unsigned int a,k,*P3; a=a%k; char i,*P1,*P2; P2++; P1=0x20;P2=0x25;P3=0x30; k=k/10; a=*P3;k=10000; } while(a/k= =0)k=k/10; *P1=i; for(i=0;a!=0;i++) }

5.6 利用8XX51的P1口,检测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意),画出电路并编出程序。

答:

ORG 0000H ABC:CLR P1.0 SETB P1.7 JB P1.7,$ JNB P1.7,$ SETB P1.0

+5VMOV R2,#0 DAY:NOP NOP

DJNZ R2,DAY SJMP ABC

Vcc10ufEARSTP1.01KΩ300Ω89C51+5V1KΩ30pf×2XTAL1P1.7XTAL2GND5.7 利用8XX51的P1口控制8个发光二极管LED。相邻的4个LED为一组,使两组每隔0.5s交替发亮一次,周而复始,画出电路并编出程序(设延时0.5s子程序为D05,已存在)。

ORG 0000H MOV A,#0FH ABC:MOV P1,A ACALL D05 SWAP A

+5VSJMP ABC

D05:MOV R6,250 DY:MOV R7,250 DAY:NOP NOP

DJNZ R7,DAY DJNZ R6,DY RET END

89C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7EA

搜索更多关于: 单片机复习材料 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

3.11将内部RAM的20H单元中的十六进制数变换成ASCII码存入22H,21H单元中,高位存入22H单元中,要求用子程序编写转换部分。 答: ORG 0000H MOV A,20H ASCII:CJNE A,# 0AH,NE ANL A,# 0F0H NE:JC A30 SWAP A ADD A,#37H ACALL ASCII RET MOV 22H,A

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com