只需一步,快速开始
热门: 51单片机 | 24小时必答区 | 单片机教程 | 单片机DIY制作 | STM32 | Cortex M3 | 模数电子 | 电子DIY制作 | 音响/功放 | 拆机乐园 | Arduino | 嵌入式OS | 程序设计
使用道具 举报
肯定是你那个程序用的头文件是 at89x52.h 吧,,在这个头文件里已经定义了好了P3_0的,P3^0是不能直接使用的哦,必须要把P3^0定义为一个sbit的变量才可以.
那肯定是因为头文件是 reg52.h吧 这个头文件里面没有定义P2_7 ,所以必须手工定义sbit DUAN=P2^7
#include"AT89x52.h" #include"intrins.h" #define uint unsigned int #define uchar unsigned char sbit WEI=P2^7; //U2 74HC573的LE端 数码管的位选端 sbit SJ=P1^4; //LED发光管的使能端 这个程序里有AT8952 怎么还能用P2^7??
这么说把 reg52.h 里没有定义P2_7 所以不能用 P2_7
而P2^7这个不是自己定义的是c51的语言规定的,所以P2^7在 reg52.h和 at89x52.h里都能使用,而P2_7 则只能在at89x52.h里使用
因为P3^0不是一个变量,你给他赋值当然会提示错误,这是不符合语法的,你要给他赋值首先得定义它才行
比如说在顶部定义
sbit p30=P3^0;
然后赋值的时候就写p30=0或者p30=1
这样就不会提示错误了.
在reg51.h中 P3是这样定义的
sfr P3 = 0xB0;
而P3^0 的意思是P3口的第0位,但P3^0 这是一个表达式,就像是1+1一样 ,所以这是不能直接使用的, 你必须把他定义为一个sbit类型的变量才能使用.
本版积分规则 发表回复 回帖后跳转到最后一页
手机版|小黑屋|51黑电子论坛 | 管理员QQ:125739409;技术交流QQ群281945664
Powered by 单片机教程网