学习Ai8051U五,C语言基础知识
本节内容主要是总结了进制转换, 数据类型,数据运算。
下面是我总结在8051中的用法,当然在8051中也是一样的。
- #include <reg51.h> // 包含8051单片机的头文件
-
- // 定义位类型变量,取值为0或1
- bit flag_bit = 0;
-
- // 有符号字符型,占8位,取值范围 -128 到 +127
- signed char signed_char_num = -10;
-
- // 无符号字符型,占8位,取值范围 0 到 +255
- unsigned char unsigned_char_num = 200;
-
- // 枚举类型,这里简单定义一个示例
- enum color {RED, GREEN, BLUE};
- enum color my_color = RED;
-
- // 有符号短整型,占16位,取值范围 -32768 到 +32767
- signed short int signed_short_int_num = -1000;
-
- // 无符号短整型,占16位,取值范围 0 到 +65535
- unsigned short int unsigned_short_int_num = 50000;
-
- // 有符号整型,占16位,取值范围 -32768 到 +32767
- signed int signed_int_num = -5000;
-
- // 无符号整型,占16位,取值范围 0 到 +65535
- unsigned int unsigned_int_num = 60000;
-
- // 有符号长整型,占32位,取值范围 -2147483648 到 +2147483647
- signed long int signed_long_int_num = -1000000000;
-
- // 无符号长整型,占32位,取值范围 0 到 +4294967295
- unsigned long int unsigned_long_int_num = 3000000000;
-
- // 单精度浮点型,占32位,取值范围 ±1.17549435E-38 到 ±3.4028235E+38
- float float_num = 3.14;
-
- // 双精度浮点型,默认与单精度浮点型大小和范围相同,如需不同需使用FLOAT64编译指令
- double double_num = 2.71828;
-
- // 指向idata、data、pdata的指针,占8位,取值范围 0 到 0xFF
- idata char *idata_ptr;
- data char *data_ptr;
- pdata char *pdata_ptr;
-
- // 指向near、xdata、code的指针,占16位,取值范围 0 到 0xFFFF
- near char *near_ptr;
- xdata char *xdata_ptr;
- code char *code_ptr;
-
- // 指向far、huge的指针,占32位,取值范围 0 到 0xFFFFFFFF
- far char *far_ptr;
- huge char *huge_ptr;
-
- // 位寻址变量,从sfr定义的字节中选取一位,取值为0或1
- sbit my_sbit = P1^0;
-
- // 特殊功能寄存器,占8位,取值范围 0 到 +255
- sfr my_sfr = 0x80; // 假设P0口地址为0x80,仅作示例
-
- // 16位特殊功能寄存器,占16位,取值范围 0 到 +65535
- sfr16 my_sfr16 = 0x82; // 假设一个16位特殊功能寄存器地址从0x82开始,仅作示例
-
- void main() {
- // 这里可以添加具体的功能代码
- while(1); // 死循环,防止程序跑飞
- }
复制代码
- #include <reg51.h> // 包含8051单片机的头文件,定义了特殊功能寄存器等
-
- // 假设A和B的值,括号内为二进制表示,但在代码中直接用十进制体现
- unsigned char A = 5; // 二进制:0000 0101
- unsigned char B = 10; // 二进制:0000 1010
-
- void main() {
- bit result_logic_and; // 定义一个位变量用于存储逻辑与结果
- bit result_logic_or; // 定义一个位变量用于存储逻辑或结果
- bit result_logic_not; // 定义一个位变量用于存储逻辑非结果
- unsigned char C = 0; // 定义变量C用于演示赋值运算符
-
- // 逻辑运算符演示
- result_logic_and = (bit)(A && B); // 逻辑与,全真为真,有假为假,这里A和B都为非零值,视为真
- result_logic_or = (bit)(A || B); // 逻辑或,有真为真,皆假为假,这里A和B至少一个为非零值,视为真
- result_logic_not = (bit)(!A); // 逻辑非,真变假,假变真,A为非零值视为真,取反后为假
-
- // 赋值运算符演示
- C = A + B; // 把A + B的值赋给C
- C += A; // 相当于C = C + A
- C -= A; // 相当于C = C - A
- C *= A; // 相当于C = C * A
- C /= A; // 相当于C = C / A
- C %= A; // 相当于C = C % A
-
- // 移位和位运算赋值运算符演示
- C = 1;
- C <<= 2; // 相当于C = C << 2
- C = 8;
- C >>= 2; // 相当于C = C >> 2
- C = 3;
- C &= 2; // 相当于C = C & 2
- C = 3;
- C ^= 2; // 相当于C = C ^ 2
- C = 3;
- C |= 2; // 相当于C = C | 2
-
- while(1); // 主循环,防止程序跑飞
- }
复制代码
|