#include"reg52.h"
void main()
{
p0^0=1
p0^1=1
p0^2=1
p0^3=1
p0^4=1
p0^5=1
p0^6=1
p0^7=1
p1^0=0
p1^1=0
p1^2=0
p1^3=0
p1^4=0
p1^5=0
p1^6=0
}
这是我写的程序,我只想直接让P0口全部输出+电,P1口输出0。
大家帮帮忙。
#include"reg52.h"
void main()
{
p0^0==1
p0^1==1
p0^2==1
p0^3==1
p0^4==1
p0^5==1
p0^6==1
p0^7==1
p1^0==0
p1^1==0
p1^2==0
p1^3==0
p1^4==0
p1^5==0
p1^6==0
}
这样也不行,郁闷....
我是程序白痴...
望高手指点...
非常感谢!!
sfr p0=0x80;
sfr p1=0x90;
这里的sfr是什么意思?
0*80为什么就是P0,90为什么就是P1?望帮忙...
sfr是C51的关键字。就像char是什么意思?
sfr biaozhifu=0x80;
有这句话,我们就可以用biaozhifu这个标识符来访问后面的内存地址对应的特殊功能寄存器。
P0口就是通过地址0x80来访问的。
所以sfr p0=0x80;就表明,后面可以用p0来访问单片机的地址为0x80单元的P0口了。8位。
sbit 类似。可以定义特殊功能位。
你再查一下,单片机的内存中0x90单元是啥,就能加深理解了。
unsigned char code LEDDisplayCode[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, //0~7 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
这个是什么意思?
能详细点说明吗?详细到白痴都听得懂的...
不解释一下?我想学啊,跪求~~
追答我的头文件少写了个.h #include
头文件内已经定义了端口且是用大写定义的,所以写程序时要用大写一致。
P0口包括P0^0 -----P0^7,每个都为1,所以为FF(1111 1111),用十六进制表示就是0XFF,P1口和这相同原理,
不知道能不能帮助到你.
还有个问题,我用Proteus仿真的时候,链接方法是用P0输出的1接上9012驱动,再接数码管,然后,数码管的另一端就直接接P1口了,这样仿真不出来,然而我的实做(就是板子已经焊接好的)却又能全部亮(没程序的89S52能全亮)...
搞不清为什么...
如何才能在Proteus里面把数码管点亮呢?别告诉我要用非常复杂的器件,什么反向器等我是没有的。
还有,这个问题主要是想学习程序,大家可以帮我分析一下吗?我只想学会如何写程序....
当硬件重新上电或复位后,初始化后所有端口是高电平,所以有可能没程序的89S52能全亮,有程序的有些端口被软件控制成低电平了,还要看你的数码管是共阳极还是共阴级的,两种点亮方式不一样。