自己编了下面的程序:(高手勿笑)
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
int *pa;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2;
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
pa=&a[0];
for(pa=9;pa>0;pa--)
{
P0=*pa;
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
问题出在P0=*pa;语句上,请问是不是我这个语句错在那里?
问题出在P0=*pa;语句上,请问我这个语句错在那里?
如果我改成这样:
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2,i;
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
for(i=9;i>0;i--)
{
P0=a[i];
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
就没有问题了。
51单片机C语言编程问题,关于指针的运用问题,菜鸟求解求。
sbit p26=P2^6;sbit p27=P2^7;int time1,time2;uint i; \/\/添加个循环控制变量 void main(){ P1=0xfe;p25=0,p26=0,p27=0;while(1){ pa=&a[0]; \/\/指针指向数组首地址 \/\/for(pa=9;pa>0;pa--) \/\/这里就有问题了,指针值=9,\/\/那就相当于硬件地址为9的存储单元的内容 ...
大神,小弟在学51单片机是个新手,有个问题想问你?
呵呵呵,单片机C语言编程需要的巧妙灵活的使用,你可以把P0口的数据直接给P2端口,给你举几个简单的例子:P0端口数据是0xFE;P0 = 0xFE;把P0端口数据赋值给P2端口 P2 = P0;这样以来不管P0端口数据是多少,P2的数据就和P0端口的数据是一样的,你可以可以把P0 = 变量来赋值,这样使用很灵活。其实你...
51单片机C51语言的几个问题。
sbit在问题1中说的很清楚了,就是为某一位起别名,sfr 这个关键字在reg52.h头文件中出现很多 它是单片机开发商把特殊功能寄存器的物理地址映射到一个宏上面,这样的话就可以对寄存器操作了,你自己可以改动,比如reg52.h中的sfr P0 = 0x80;你改为sfr PP=0X80; 那么单片机上的P1口(起名P1口...
单片机菜鸟问个小白问题 求解释 C语言程序的。
全局变量数组,8个元素,分别表示8个数码管分别显示什么。主程序部分一个循环,首先检测什么按键被按下,按了就给这个全局数组赋值 检测完了之后是显示的代码。我只操作过2位数码管,8位光靠扫描不确定能不能显示得稳定(不闪烁),这个只能靠你了,反正是显示,显示的代码就是从我刚刚说的全局数组读...
关于C语言编写8051程序的问题
第一,LZ 的主函数没有循环语句,虽然编译器 编译的时候 会帮你加上去,可是这不是个好习惯;第二,51单片机 只能识别低电平,无法识别高电平,所以,来低的可以识别,来高的,就需要硬件支持了。第三,真要写程序的话,LZ的要求描述,与程序都过于简单,无法设计合理程序。
51单片机c语言编程序让两位数码管显示0-99,求指导!!急用!
参考下网上的程序,只要明白两个问题就不难了,第一是数码管的结构及显示原理;第二是动态显示
求救,求救,51单片机C语言中找一种类似位sbit的东西定义在结构体中_百...
判断:要判断单字节二进制数A的BIT2,可以使用A&0b00000100,结果等于0,说明BIT2=0,否则,BIT2=1.设置:要将单字节二进制数A的BIT2置位为1,可以使用A||0b00000100,复位为0,可以使用A&0b11111011。读取:要读取单字节二进制数A的BIT2,可以使用“移位”及“”,(A>>2)&0b00000001...
51单片机串口问题,波特率设置问题
单目运行符的优先级最高,比如+、-、!、~、*(指针)……,如果要让最终计算结果取反,就应该全部计算完成后再取反,也相当于用0减去那个数,跟用256减是一样的 TH1是8位寄存器 单片机C语言中计算时尤其要注意数据溢出和运算优先级的问题 最好的方法就是加括号,万能的 ...
51单片机 C语言编程
其次,要给某个端口赋值(1或0),还是给端口组(8位单片机一个组八个脚)赋值,这就是按位操作还是按字节操作的问题。例如:单片机有PA口,PB口,其中PA口有PA0~PA7八个脚,拉高PA口(PA = 0XFF;),拉高PA0脚(PA &=0X01;或者PA0 = 1; )。当然有些单片机是通过读写IO口输入输出寄存器...
单片机的菜鸟问题。
你新建工程选完芯片之后会出现一个对话框问你要不要把STARTUP.A51这个文件添加到你的工程中,确定或取消都行。确定的结果是:如果你没添加你的C语言代码文件进去的话,直接编译就会出现你说的情况,或者你编的是汇编的程序,编译后也会出现你说的情况。建议是:用汇编的话取消,用C的话确定。