单片机C语言设计程序分析题

单片机C语言设计程序分析题,第1张

lampa是定义一个全局变量,该变量在定义行之后的源程序的任何一个地方都可以使用。对于你这个程序,变量a只在mian函数中使用,其实完全可以把lampa,这句放在main函数中的第一句,while(1)这句之前。

这个程序应该是把

十进制数

转换成

二进制数

输出

#include

//

头文件

void

main()

{

int

a,b[10],c,i=0

//

a存储待转换的十进制数,b[10]存储转换后的二进制位,

//

c

是存储

余数

printf("输入一个整数\n")

scanf("%d",&a)

//

输入需转换的十进制数

while(a!=0)

//

只要a不为零,就继续转换

{

c=a%2

//

把a除以2

余数赋值给c

a=a/2

//

把商存入a进行下一次循环

b[i]=c

//

把余数存到数组中作为二进制中的一位

i++

}

for(i>0i--)

printf("%d",

b[i-1])

//反向输出余数,即得到二进制

例如输入4

因为4

!=

0

4

/

2

=

2((商=a)...........0(余数=c=b[0])

因为2

!=

0

2

/

2

=

1((商=a)...........0(余数=c=b[1])

因为1

!=

0

1

/

2

=

0((商=a)...........1(余数=c=b[2])

因为

0

=

0

结束循环输出

b[2]

b[1]

b[0]

100,也就是二进制的

4

设R0=20H,R1=25H,(20H)=70H,(21H)=80H,(22H)=A0H,(22H)=A0H,(25H)=A0H(26H)=6FH,(27H)=76H,下列程序执行后,

CLR C CY=0

MOV R2,#3 R2=03H R2=02HR2=01H

LOOP:

MOV A,@R0 A=70H A=80H A=A0H

ADDC A,@R1CY=1,A=10H CY=0,A=F0HCY=1,A=16H

MOV @R0,A (20H)=10H (21H)=F0H (22H)=16H

INCR0 R0=21H R0=22HR0=23H

INCR1 R1=26H R1=27HR1=28H

DJNZ R2,LOOP

JNCNEXT

MOV @R0,#01H 23H=01H

SJMP $

NEXT: DECR0

SJMP $

结果:(20H)=10H ,(21H)=F0H ,(22H)=16H ,(23H)=01H ,(A)=16H ,(CY)=1 .

分析过程参照注释


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10973024.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存