初学单片机原理及接口技术c语言,不懂'附近的'='错误语法',写入sbit 出错得更多

51单片机C语言学习笔记6:51单片机C语言头文件及其使用
16:49:09编辑:什么鱼 关键字:&&&&
很多初学单片机者往往对C51的感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的
sfr P1& = 0x90;
也就是说,到底大写,还是小写,就是在这里面决定的。这就说明,如果你要用小写,就得在头文件中改为小写。其实它都是为了编程序方便才这样写的,在程序编译时,就会变成相应的地址(如P1就变成了0x90)。
&&&&&&&下面是一个标准的C51头文件REG52.H:
(此文件一般在C:KEILC51INC下 ,INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。)
/*&&&&&&&& BYTE Registers&&&&&&&& */
sfr P0&&&&&&&&&& = 0x80;
sfr P1&&&&&&&&&& = 0x90;
sfr P2&&&&&&&&&& = 0xA0;
sfr P3&&&&&&&&&& = 0xB0;
sfr PSW&&&&&&&&& = 0xD0;
sfr ACC&&&&&&&&& = 0xE0;
sfr B&&&&&&&&&&& = 0xF0;
sfr SP&&&&&&&&&& = 0x81;
sfr DPL&&&&&&&&& = 0x82;
sfr DPH&&&&&&&&& = 0x83;
sfr PCON&&&&&&&& = 0x87;
sfr TCON&&&&&&&& = 0x88;
sfr TMOD&&&&&&&& = 0x89;
sfr TL0&&&&&&&&& = 0x8A;
sfr TL1&&&&&&&&& = 0x8B;
sfr TH0&&&&&&&&& = 0x8C;
sfr TH1&&&&&&&&& = 0x8D;
sfr IE&&&&&&&&&& = 0xA8;
sfr IP&&&&&&&&&& = 0xB8;
sfr SCON&&&&&&&& = 0x98;
sfr SBUF&&&&&&&& = 0x99;
/*&&&&&&&& 8052 Extensions&&&&&&&& */
sfr T2CON&&&&&&&& = 0xC8;
sfr RCAP2L&= 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2&&&&&&&&&& = 0xCC;
sfr TH2&&&&&&&&&& = 0xCD;
/*&&&&&&&& BIT Registers&&&&&&&& */
/*&&&&&&&& PSW&&&&&&&& */
sbit CY&&&&&&&&&& = PSW^7;
sbit AC&&&&&&&&&& = PSW^6;
sbit F0&&&&&&&&&& = PSW^5;
sbit RS1&&&&&&&&& = PSW^4;
sbit RS0&&&&&&&&& = PSW^3;
sbit OV&&&&&&&&&& = PSW^2;
sbit P&&&&&&&&&&& = PSW^0; //8052 only
/*&&&&&&&& TCON&&&&&&&& */
sbit TF1&&&&&&&&& = TCON^7;
sbit TR1&&&&&&&&& = TCON^6;
sbit TF0&&&&&&&&& = TCON^5;
sbit TR0&&&&&&&&& = TCON^4;
sbit IE1&&&&&&&&& = TCON^3;
sbit IT1&&&&&&&&& = TCON^2;
sbit IE0&&&&&&&&& = TCON^1;
sbit IT0&&&&&&&&& = TCON^0;
/*&&&&&&&& IE&&&&&&&& */
sbit EA&&&&&&&&&& = IE^7;
sbit ET2&&&&&&&&& = IE^5; //8052 only
sbit ES&&&&&&&&&& = IE^4;
sbit ET1&&&&&&&&& = IE^3;
sbit EX1&&&&&&&&& = IE^2;
sbit ET0&&&&&&&&& = IE^1;
sbit EX0&&&&&&&&& = IE^0;
/*&&&&&&&& IP&&&&&&&& */
sbit PT2&&&&&&&&& = IP^5;
sbit PS&&&&&&&&&& = IP^4;
sbit PT1&&&&&&&&& = IP^3;
sbit PX1&&&&&&&&& = IP^2;
sbit PT0&&&&&&&&& = IP^1;
sbit PX0&&&&&&&&& = IP^0;
/*&&&&&&&& P3&&&&&&&& */
sbit RD&&&&&&&&&&&&= P3^7;
sbit WR&&&&&&&&&& = P3^6;
sbit T1&&&&&&&&&&&&= P3^5;
sbit T0&&&&&&&&&&&&= P3^4;
sbit INT1&&&&&&&& = P3^3;
sbit INT0&&&&&&&& = P3^2;
sbit TXD&&&&&&&&& = P3^1;
sbit RXD&&&&&&&&& = P3^0;
/*&&&&&&&& SCON&&&&&&&& */
sbit SM0&&&&&&&&& = SCON^7;
sbit SM1&&&&&&&&& = SCON^6;
sbit SM2&&&&&&&&& = SCON^5;
sbit REN&&&&&&&&& = SCON^4;
sbit TB8&&&&&&&&& = SCON^3;
sbit RB8&&&&&&&&& = SCON^2;
sbit TI&&&&&&&&&& = SCON^1;
sbit RI&&&&&&&&&& = SCON^0;
/*&&&&&&&& P1&&&&&&&& */
sbit T2EX&&&&&&&& = P1^1; // 8052 only
sbit T2&&&&&&&&&& = P1^0; // 8052 only
&&&&&&&&&&&&&
/*&&&&&&&& T2CON&&&&&&&& */
sbit TF2&&&&&&&&&& = T2CON^7;
sbit EXF2&&&&&&&&& = T2CON^6;
sbit RCLK&&&&&&&&& = T2CON^5;
sbit TCLK&&&&&&&&& = T2CON^4;
sbit EXEN2&&&&&&&& = T2CON^3;
sbit TR2&&&&&&&&&& = T2CON^2;
sbit C_T2&&&&&&&&& = T2CON^1;
sbit CP_RL2 = T2CON^0;
还有一点就是,现在有很多改进型的单片机,它们有很多新增的特殊功能寄存器在标准的reg51.h或reg52.h中没有定义,这就需要自己加进头文件(相关厂家已经把它们定义好了),当然也可以直接在程序中定义。
如STC传统,要使用新增的特殊功能寄存器要include头文件,具体定义如下:
http://space.ednchina.com/Upload//aef22653-a6aa-42ed-9019-8ffe4f074c6e.rar
sfr AUXR = 0x8e;
sfr AUXR1 = 0xa2;
sfr P4 = 0xe8;
sfr XICON = 0xc0;
sfr IPH = 0xb7;
sfr WDT_CONTR = 0xe1;
sfr ISP_DATA = 0xe2;
sfr ISP_ADDRH = 0xe3;
sfr ISP_ADDRL = 0xe4;
sfr ISP_CMD = 0xe5;
sfr ISP_TRIG = 0xe6;
sfr ISP_CONTR = 0xe7;
sbit PX3 = XICON^7;
sbit EX3 = XICON^6;
sbit IE3 = XICON^5;
sbit IT3 = XICON^4;
sbit PX2 = XICON^3;
sbit EX2 = XICON^2;
sbit IE2 = XICON^1;
sbit IT2 = XICON^0;
头文件&STC12C5A60S2系列双串口1T 8051单片机
头文件&STC12C5A60AD系列高速1T 8051单片机
头文件&STC12C5201AD系列高速1T 8051单片机
头文件&STC11F60XE高速总线系列1T 8051单片机
头文件&STC10F08XE高速总线系列1T 8051单片机
参考资料:
1)51单片机C语言头文件及其使用&&徐学军单片机工作室
http://hi.baidu.com/xxjmcu/blog/item/6f73b31bbaa7.html/cmtid/6aaaf78ff01f36a7
2)单片机中用c编程时头文件reg51.h及reg52.h解析
http://blog.csdn.net/benben85/archive//3951522.aspx
关键字:&&&&
来源: eefocus
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
/*&名称:51单片机实现LED流水灯(数组方式和位运算方式)说明:今天又重新开始系统的学习51了,LED就算个开端吧。&要注意两点:&1、sfr和sbit是C语言扩展出来的关键字。其中sfr用于对特殊功能寄存器进行声明,sbit用于对某些特殊功能寄存器的某位进行声明。这里和宏定义很相似,但是不能用宏定义进行替换,对于前者是因为51单片机的寄存器存在于内部空间0x80-0xFF,这空间属于直接寻址,51特殊功能寄存只能直接寻址,不能间接寻址。如果用宏定义的话,在翻译成汇编时就会认为是通过总线访问对应的外部地址了。对于后者,sbit是定义一个标志位,也叫位变量。而类似于#define key1 P3
/*&名称:51单片机之按键实验&说明:键盘是计算机最基础、最重要的输入设备之一。对于键盘来说,其工作任务大体可以分为以下三项:&(1)、按键识别。即判断有无按键按下。&(2)、求键值。判断哪个键被按下。&(3)、执行相应的操作。&在这里,实验所用到的键盘为独立键盘和矩阵键盘。对于独立键盘,它的每个按键需要占用一个IO口。一般来说,按键一端接地,另一端接IO口。当按键按下时,线路被导通,IO口被拉低,即状态为‘0’。所以在使用是我们一般把对应IO口置成高电平,然后不断检测此IO口是否被拉低,从而判断按键是否按下。&对于矩阵键盘来说,它用较少的IO口完成较多个按键
/*&名称:51单片机之数码管显示实验&说明:对于数码管来说,其本质上可以理解为按照一定规则组合的多个二极管。其使用只需按照特定规则显示对应的二极管即可。要稍微注意一点的就是多个数码管的显示分为静态显示和动态显示。静态显示就是每个二极管显示的内容是一样的,通过片选信号来决定是哪个二极管该显示。动态数码管,即利用人眼的视觉停留效果,快速扫描,快速显示每个数码管的内容,使得每个数码管看起来好像是一起显示的一样。&本实验编写了几个数码管显示的简单程序。在此不做赘述了。*/#include &reg52.h&#define uchar unsigned char//共阳极段码(a在高位,dp在低位
最近的一个项目中测试系统的高低温实验,结果意外的发现经过高低温实验后(80℃到-20摄氏度)单片机有些已经死机了,所以不得不着手研究一下这个问题,在网上查阅资料后,基本上可以归结于以下几个问题:1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象&2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。&&3. 地址溢出,常见错误为指针操作
51单片机的外部中断有两种模式:电平触发模式和跳变沿触发模式第一,选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。第二,选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。&区别:电平触发模式时,中断标志寄存器不锁存电平中断请求信号。单片机把每个周期的S5P2采样外部中断口的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换言之,就是要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行
最近看了一下80C51单片机的中断部分的实验,做一些笔记,方便以后学习查找。&首先说一下什么是中断吧,中断是指CPU在执行当前程序的过程中,由于某种随机出现的外设(外部设备)请求或CPU内部的异常事件,使CPU暂停正在执行的程序而转去执行相应的服务处理程序;当服务处理程序运行完毕之后,CPU再返回到暂停处继续执行原来的程序。那什么是中断嵌套呢?简单点说就是低优先级的中断可以被高优先级的中断源所中断,等高优先级中断服务程序结束后,再返回去执行被中断的的低优先级的中断服务程序。举个简单的栗子吧(之前写过但不知道怎么删了,,又让我重新编辑):比如我们就是一个CPU,我们当前在洗衣服(当前程序),突然电话铃声响了(中断来了
热门资源推荐
■有奖直播:TI MSP430TM集成可配置信号链模块在传感测量领域的应用
最新单片机文章
最新视频课程
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。
相关热搜器件单片机c语言 sbit P1_0 = P1 ^ 0;_百度知道
单片机c语言 sbit P1_0 = P1 ^ 0;
这句语句是什么意思啊,运算符'^'是什么意思?...
这句语句是什么意思啊,运算符'^'是什么意思?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
采纳数:43
获赞数:276
擅长:暂未定制
“^”是取位符号,去P1口的第0位
dearsohucom
dearsohucom
采纳数:41
获赞数:44
定义变量P1_0代表P1口的第0位
chongdongchen
chongdongchen
采纳数:39
获赞数:45
P1 的第 0 位
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。单片机I/O的扩展
10:37:39编辑:什么鱼 关键字:&&&&
8255是微机并行可编程I/O口芯片。
程序如下:
&AJMP&MAIN
MAIN:&MOV&SP,#030H
MOV&P0,#00H
MOV&R0,#07BH&;控制字地址
MOV&A,#083H&&;8255A初始设置
MOVX&@R0,A
MOV&R0,#007CH&;A端口地址
MOV&A,#0FFH
MOVX&@R0,A
MOV&A,#0ffH&&;流水灯付初值
关键字:&&&&
来源: eefocus
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
/*&名称:51单片机实现LED流水灯(数组方式和位运算方式)说明:今天又重新开始系统的学习51了,LED就算个开端吧。&要注意两点:&1、sfr和sbit是C语言扩展出来的关键字。其中sfr用于对特殊功能寄存器进行声明,sbit用于对某些特殊功能寄存器的某位进行声明。这里和宏定义很相似,但是不能用宏定义进行替换,对于前者是因为51单片机的寄存器存在于内部空间0x80-0xFF,这空间属于直接寻址,51特殊功能寄存只能直接寻址,不能间接寻址。如果用宏定义的话,在翻译成汇编时就会认为是通过总线访问对应的外部地址了。对于后者,sbit是定义一个标志位,也叫位变量。而类似于#define key1 P3
/*&名称:51单片机之按键实验&说明:键盘是计算机最基础、最重要的输入设备之一。对于键盘来说,其工作任务大体可以分为以下三项:&(1)、按键识别。即判断有无按键按下。&(2)、求键值。判断哪个键被按下。&(3)、执行相应的操作。&在这里,实验所用到的键盘为独立键盘和矩阵键盘。对于独立键盘,它的每个按键需要占用一个IO口。一般来说,按键一端接地,另一端接IO口。当按键按下时,线路被导通,IO口被拉低,即状态为‘0’。所以在使用是我们一般把对应IO口置成高电平,然后不断检测此IO口是否被拉低,从而判断按键是否按下。&对于矩阵键盘来说,它用较少的IO口完成较多个按键
/*&名称:51单片机之数码管显示实验&说明:对于数码管来说,其本质上可以理解为按照一定规则组合的多个二极管。其使用只需按照特定规则显示对应的二极管即可。要稍微注意一点的就是多个数码管的显示分为静态显示和动态显示。静态显示就是每个二极管显示的内容是一样的,通过片选信号来决定是哪个二极管该显示。动态数码管,即利用人眼的视觉停留效果,快速扫描,快速显示每个数码管的内容,使得每个数码管看起来好像是一起显示的一样。&本实验编写了几个数码管显示的简单程序。在此不做赘述了。*/#include &reg52.h&#define uchar unsigned char//共阳极段码(a在高位,dp在低位
宏晶STC很多系列的单片机片内都集成了EEPROM存储器(其实是Data Flash),方便用户使用,想得真周到!今天写了个小程序,测试了一下,工作正常。下面就上我自己写的源程序。本人在STC89C52RC单片机上试验成功。首先是stcEEPROM.h头文件内容:/*When & & & & Who & & Remarks----------------------------------2011-Oct-06 &黄长浩 &初始版本&*/&#ifndef __STCEEPROM_H__#define
;&&&&&& [Bus Signal]&&TX, RX, CK&&&&USART支持同步模式,因此USART 需要同步始终信号USART_CK(如STM32 单片机),通常情况同步信号很少使用,因此一般的单片机UART和USART使用方式是一样的,都使用异步模式。在博主目前的项目中使用通信主要是通过RS485协议来进行通信,RS485通信是工业上非常常见的半双工异步通信典型通信协议,特征是通信的设备都挂载到主线上,使用差分信号来判断收发,且同一时刻只能进行一个功能(收信息或者发信息)那么在博主这边的软件处理方式如下;首先要
AD采集最好要满足的条件:采样频率不小于被采集信号最高频率的两倍,则采样输出信号就可以无失真的重新啊还原输入信号,通常的实际应用中,采样频率为采集最高频率的5-10倍。AD芯片的数据输出方式有串行和并行两种方式,对于AVR单片机来说A/D芯片和AVR单片机接口是需要考虑的一些问题:(1)模拟信号输入的连接:单端输入时,VIN+引脚直接与信号输入连接,VIN-接地。差分输入时,单端输入正信号,VIN+引脚直接与信号连接,VIN-引脚接地。单端输入负信号,VIN-引脚与信号连接,VIN+引脚接地。(2)数据输入线与系统总线的连接:有可控制的三态输出门时候可以直接和系统总线连接,没有输出门的时候要通过I/O口进行连接。(3)启动信号
热门资源推荐
■有奖直播:TI MSP430TM集成可配置信号链模块在传感测量领域的应用
最新单片机文章
最新视频课程
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。
相关热搜器件查看: 442|回复: 3
关于单片机编程不能进行位操作的问题及解决方法
本帖最后由 avery423 于
16:26 编辑
关于单片机仿真和实验中不能进行位操作的问题及解决方法
本人临时做个单片机的小仿真,位操作总报错,在网上也找不到解决方法,引用&reg51.h&或&reg52.h&或&8051.h&头文件时,写指令P2^3=0;这样的位操作语句总是报错,提示等号两边不相等、等式不成立等等。但在&at89x51.h&头文件中,位被定义为P2_3的形式,则上述位操作可行。在读到一个小程序时终于明白了报错的原因,整理分享给初学者。关键词:8051单片机;位操作;报错;解决方法 1,& && && &&&问题描述在单片机仿真和实验的程序编写过程中,编译经常会报这样一种错误,根本原因并不是头文件中不支持位操作,而是头文件中位定义的语句中借用了位运算符,在C语言下容易出现混淆,引起编译时的误判。比如当我引用&reg52.h&编写STC89C52(其余头文件中位定义的语句形如“P2^3”型号的单片机一样)的程序如下:#include&reg52.h&void delay(unsigned intxms)& &&&//延时 *ms 时间{ unsigned int i,j; for(i=i&0;i--) for(j=112;j&0;j--) ;}void main(){& && && & while(1)& && && & {& && && && && && & P2^3=0;& && && && && && & delay(1000);& && && && & //1000ms即1s& && && && && && & P2^3=1;& && && && && && & delay(1000);& && && & }}打开头文件reg52.h(见附后)发现头文件中P2.3确实是写作P2^3(在at89x51.h中写作P2_3,可以进行位操作,即可写作P2_3=0;),在keil_V4中编译报错信息如下:compiling avery4.c...AVERY4.C(17): errorC141: syntax error near '='AVERY4.C(21): errorC141: syntax error near '='avery4.c - 2 Error(s), 0 Warning(s).& && && && && && &即等式附近的语法错误,等式右边的0、1代表0、1(假、真),符号“^”是位运算符,表示“异或”的运算,因而左边P2^3不是P2_3(reg52.h不支持P2_3的写法),而是“P2异或3”的意思,表示一个确定的数值(但P2和3的位数不同,该运算本身错误),因此无法将一个数赋值给另一个数而报错,即使写成(P2^3)=0;也依然是这个问题。2,& && && &&&解决方法解决方法的思想是想办法把P2^3确定地表示成一个端口位的形式,用到位定义指令,程序如下: #include&reg52.h&sbit fm=P2^3;& && && && && && &&&// sbit是位定义指令void delay(unsigned intxms)& &&&//延时 *ms 时间{ unsigned int i,j; for(i=i&0;i--) for(j=112;j&0;j--) ;& && && && && & //什么也不做,但该分号不可省,为for循环的必要结构}void main(){& && && & while(1)& && && & {& && && && && && & fm=0;& && && && && && & delay(1000);& && && && & //1000ms即1s& && && && && && & fm=1;& && && && && && & delay(1000);& && && & }}这样,fm就表示真正的位P2^3了。如果把“sbit fm=P2^3;”改成“#define fm P2^3”,其结果也是报错,问题相同,“#definefm P2^3”的实际意思是fm是P2和3取异或的结果值,并不是相要的位P2.3。 3,& && && & 附录头文件&reg52.h&/*--------------------------------------------------------------------------REG52.H Header file for generic80C52 and 80C32 microcontroller.Copyright (c) Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/ #ifndef __REG52_H__#define __REG52_H__ /*&&BYTE Registers&&*/sfr P0& & = 0x80;sfr P1& & = 0x90;sfr P2& & = 0xA0;sfr P3& & = 0xB0;sfr PSW& &= 0xD0;sfr ACC& &= 0xE0;sfr B& &&&= 0xF0;sfr SP& & = 0x81;sfr DPL& &= 0x82;sfr DPH& &= 0x83;sfr PCON&&= 0x87;sfr TCON&&= 0x88;sfr TMOD&&= 0x89;sfr TL0& &= 0x8A;sfr TL1& &= 0x8B;sfr TH0& &= 0x8C;sfr TH1& &= 0x8D;sfr IE& & = 0xA8;sfr IP& & = 0xB8;sfr SCON&&= 0x98;sfr SBUF&&= 0x99; /*&&8052 Extensions&&*/sfr T2CON&&= 0xC8;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2& & = 0xCC;sfr TH2& & = 0xCD;
/*&&BIT Registers *//*&&PSW&&*/sbit CY& & = PSW^7;sbit AC& & = PSW^6;sbit F0& & = PSW^5;sbit RS1& &= PSW^4;sbit RS0& &= PSW^3;sbit OV& & = PSW^2;sbit P& &&&= PSW^0; //8052 only /*&&TCON */sbit TF1& &= TCON^7;sbit TR1& &= TCON^6;sbit TF0& &= TCON^5;sbit TR0& &= TCON^4;sbit IE1& &= TCON^3;sbit IT1& &= TCON^2;sbit IE0& &= TCON^1;sbit IT0& &= TCON^0; /*&&IE&&*/sbit EA& & = IE^7;sbit ET2& &= IE^5; //8052 onlysbit ES& & = IE^4;sbit ET1& &= IE^3;sbit EX1& &= IE^2;sbit ET0& &= IE^1;sbit EX0& &= IE^0; /*&&IP&&*/sbit PT2& &= IP^5;sbit PS& & = IP^4;sbit PT1& &= IP^3;sbit PX1& &= IP^2;sbit PT0& &= IP^1;sbit PX0& &= IP^0; /*&&P3&&*/sbit RD& & = P3^7;sbit WR& & = P3^6;sbit T1& & = P3^5;sbit T0& & = P3^4;sbit INT1&&= P3^3;sbit INT0&&= P3^2;sbit TXD& &= P3^1;sbit RXD& &= P3^0; /*&&SCON */sbit SM0& &= SCON^7;sbit SM1& &= SCON^6;sbit SM2& &= SCON^5;sbit REN& &= SCON^4;sbit TB8& &= SCON^3;sbit RB8& &= SCON^2;sbit TI& & = SCON^1;sbit RI& & = SCON^0; /*&&P1&&*/sbit T2EX&&= P1^1; // 8052 onlysbit T2& & = P1^0; // 8052 only& && && && & /*&&T2CON */sbit TF2& & = T2CON^7;sbit EXF2& &= T2CON^6;sbit RCLK& &= T2CON^5;sbit TCLK& &= T2CON^4;sbit EXEN2&&= T2CON^3;sbit TR2& & = T2CON^2;sbit C_T2& &= T2CON^1;sbit CP_RL2 = T2CON^0; #endif
本帖最后由 avery423 于
16:28 编辑
总之,用到sbit指令,该指令也可以更改原头文件(不建议新手这么做)
楼主说的问题
只有在 STC产品里有
我用的AT产品没有这种现象发生
lxa0 发表于
楼主说的问题
只有在 STC产品里有
我用的AT产品没有这种现象发生
关键看头文件里的定义,主程序里有可能误用逻辑运算符“^”而引发报错,懂的话这个问题就太小case了
Powered by51单片机C语言经典小程序_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
51单片机C语言经典小程序
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩47页未读,
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 51单片机c语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信