pic C语言 嵌入式 位操作 编程问题 头文件定义
作者&投稿:廖施 (若有异议请与网页底部的电邮联系)
PORTCbits.RC0或者RC0实际上取决于所用单片机的头文件,进一步说取决于PICC对你应用的那款单片机头文件的定义。感兴趣的话你可以在你的PICC中的“inc”文件夹中找到你应用的那款单片机的头文件,这样你就可以看到他对各类寄存器的定义,也就知道了两者可以采取哪种书写规范。其实在实际应用中你无须在意这两种书写方式,哪个能用就用哪个。
PIC有很多款单片机,你学的 是PIC哪款单片机?头文件都放在编译器的安装目录中,以HI-TECH picc为例:头文件路径为C:\Program Files (x86)\HI-TECH Software\PICC\9.82\include
如果你是用16系列的话我这样头文件详细说明
#define BIT2 (0x1 <<2) /*其实就等于2,二进制00000010标记*/
static int a;/*定义静态全局变量A*/
void Set_bit2(void) /*将a的第二位调整,置成1,比如a=abcdefgh,现在改成a=abcdef1h*/
{ a |= BIT2;}
void Clear_bit2(void) /*将a的第二位调整,置成0,比如a=abcdefgh,现在改成a=abcdef0h*/
{ a &= ~BIT2;}
2.
#define BIT_TEST( b,n) (((b)&(1<<(n)))!=0) /*检查b的第n位是1还是0*/
#define getbit(b,n) (((b)&(1<<(n)))?1:0) /*获取b的第n位信息*/
谭浩强的C语言那本书里面,找运算符那一章就是
1.
#define
BIT2
(0x1
<<2)
/*其实就等于2,二进制00000010标记*/
static
int
a;/*定义静态全局变量A*/
void
Set_bit2(void)
/*将a的第二位调整,置成1,比如a=abcdefgh,现在改成a=abcdef1h*/
{
a
|=
BIT2;}
void
Clear_bit2(void)
/*将a的第二位调整,置成0,比如a=abcdefgh,现在改成a=abcdef0h*/
{
a
&=
~BIT2;}
2.
#define
BIT_TEST(
b,n)
(((b)&(1<<(n)))!=0)
/*检查b的第n位是1还是0*/
#define
getbit(b,n)
(((b)&(1<<(n)))?1:0)
/*获取b的第n位信息*/
谭浩强的C语言那本书里面,找运算符那一章就是
鄹底奥贝: 1.用位操作实现,& | ^这些.2.用C语言的位段实现,谭浩强的C语言书上有讲.3.PIC16本身汇编不支持单个位的存取和运算操作,建议楼主使用第1种方法,位段会增加目标程序的尺寸和复杂度.
澄海区19548667344: PIC单片机 c语言编程 - ?
鄹底奥贝: 以DIP-40的PIC16F877A来举例 灯闪动频率为1秒void Delay_Ms(unsigned char n); void m...
澄海区19548667344: 在pic中如何用C语言编写程序? - ?
鄹底奥贝: //09/10/24//lcd1602显示时间 日期 星期 温度//通过按键校时:K10--小时,K11--分钟,K12--秒(归零),K13-星期,BR1--年,RB2--月,RB3--日./...
澄海区19548667344: pic单片机可以用c编程吗?用什么编译软件?他是属于51系列的吗??
鄹底奥贝: 可以,用Keil C51编程软件,是C语法格式的,但是和微机上的C语言有区别的, 不过也比写汇编强太多了的
澄海区19548667344: pic 单片机eeprom定义的c语言描述 - ?
鄹底奥贝: 预处理控制行又称预处理命令,是C编译系统的一个组成部分.C语言提供的预处理功能主要有以下三种: (1) 宏定义; (2) 文件包含; (3) 条件编译. 它们分别用宏定义命令、文件包含命令和条件编译命令来实现.为了与一般C语句相...