1.编写一C51函数,把从键盘输入的5位十进制数数转换成一个无符号整型数(假设未超出整型数范围)。设从键盘输入的数存放在一无符号数组中,低位数为低下标元素。
unsigned char data key_buffer[5];
unsigned int trans_int(void)
{
unsigned char data i;
unsigned int data temp=0;
for(i=0;i<5;i++)
{
temp=temp*10+key_buffer[i]-0x30;
}
return temp;
}
2.编写一C51函数,把一整型数按十进制数将其各位分离,分离后放在一无符号数组中,便于显示。要求把低位数作为低下标元素。
unsigned char data shu[5];
void main(unsigned int x)
{
unsigned int temp;
unsigned char i;
for(i=0;i<4;i++)
{
shu[i]=temp%10;
temp=temp/10;
}
shu[4]=temp;
}
3.编写一C51函数,使用专用指针,把片外数据存储器中从0x100开始的30个字节数据,传送到片内从0x40开始的区域中。
void main()
{
unsigned char data i,*dpt;
unsigned char xdata *xdpt;
dpt=0x40;
xdpt=0x100;
for(i=0;i<30;i++)
*(dpt+i)=*(xdpt+i);
}
4.编写一C51程序,实现从P1口输出产生的流水灯,要求用汇编语言函数实现数据左移或右移。
#pragma src
#include <at89x52.h>
void main()
{
unsigned char temp,i;
while(1)
{
temp=0x55;
P1=temp;
delay();
#pragma asm
MOV A,temp
RR A
MOV temp,A
#pragma endasm
P1=temp;
delay();
}
}