单片机符号位数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数部分简单的就这样了,举个例子如:
static unsigned char example 定义无符号字符型静态变量 example void timer_0(void) interrupt 1 using 1 samll 定义 T0 中断函数,使用第二组寄存器,所有缺省 变量参数均装入内部 RAM
Fra Baidu biblioteklong
float
struct
union
void
bit
[标识符]
修饰符部分
(reentrant)(interrupt m)(using n) char
int
很重要的一张表,已经包括了 c51 中所有函数的定义,建议做成 txt 放在桌面上或者做 成 jpg 成桌面并在 CDEFG 盘、移动硬盘、u 盘、邮箱备份(有条件的还可刻录成光盘)^_^ 详细说明如下: 【存储类型说明符】有 static 和 extern 两种。这两种 c 语言中已经学过,不详细说明了。static 指静态变量,本函数内部有效。extern 是外部变量,全局有效。另外如果不加说明,则默认
interrupt m:应该说这是最重要的修饰符了,加了 interrupt 后说明此函数是中断函数,即 函数返回指令是 reti。根据 m 值的不同而代表不同的中断。说明如下: interrupt 0 指明此函数是外部中断 0 interrupt 1 指明此函数是计时器/计数器 T0 中断 interrupt 2 指明此函数是外部中断 1 interrupt 3 指明此函数是计时器/计数器 T1 中断
【标识符】: 标识符是最灵活的地方了,可以是你喜欢的任何字母的组合,当然不能是 c 语言中已经定义 的符号。建议用拼音或英语单词,助于记忆。同种类型变量多了可以加下划线再数字的形式, 如 example_1、example_2、example_3 等。
【修饰符部分】也比较重要 完整的修饰符的形式是(reentrant)(interrupt m)(using n),括号中的修饰符可以同时出现也可
interrupt 4 指明此函数是串行口中断 另外对于 52 单片机还有 interrupt 5,指明此函数是计时器/计数器 T2 中断
using n:这是指明函数变量放置在那组寄存器,51 系列共有 4 组寄存器(好像没有记错吧 ^_^)。那么可以分别用 using 0、using 1、using 2、using 3 来修饰。加上此修饰后是人工配置 寄存器组(适合牛人),如果不加此修饰则编译程序会自动分配寄存器组来放置变量(嘿嘿,适 合我这种菜鸟)。
用 c 来对单片机编程主要是引入了几个单片机特有的函数以及函数标识符、修饰符等, 所有指令遵循 c 语言的语法。本文主要说明了编程中经常用到的几个函数说明、中断等情况, 对于复杂的很少用到的函数及修饰符忽略不计,有兴趣我们一起研究下 ^_^
在 c51 函数定义中要考虑的东西比较多,不像我们在 c 语言中总是 int、int、int 看上去 不爽再 float,还是不爽就 double。c51 中不能随便就 int 了。要知道我们的程序最后是要烧 到单片机里面去的,那是 8 位机,可不是你 32 位的 cup ~-~
}
编译程序:推荐大家用 keil,只能用一句话来形容了,很好很强大!
关于头文件:c51 使用的头文件一般是 reg51.h 或 reg52.h,引用此头文件后在编程时可以使用 51 系列中已经定义的特殊寄存器名而不用事先声明,如 P1(注意,是大写哦)代表 P1 口,ET0 代表计时器/计数器 T0 的中断允许位,T0 代表计时器/计数器 T0 等等。
基于 51 系列单片机浅谈。(转)(2009-08-22 00:22:18)转载标签: 杂谈 基于 51 系列单片机的简单 c 语言编程 基于大家都学过了 c 语言和单片机,但我们学单片机的时候没有学到如何用 c 来编程序,
来替代难懂而又冗长的汇编指令。难道这么好的 c 就忍心搁置在记忆的深处浪费掉了?其实 用 c 来对单片机编程不是很难的一件事情,这只是一个接口问题,而这个接口则相当简单。 一般人花一两个小时可以基本掌握了,编几个简单的程序没有问题了。然后当你回头看看上 学期那些用汇编做的实验,真是 easy!
以出现其中一个。 reetrant 是可重复调用修饰符。所谓可重复调用,指一个函数正在被其他函数(如 A 函数)
调用但还没有返回时,又有一个第三方函数(如函数 B)可以来调用此函数而不会被函数 A 改 变的变量而改变其运行结果,在 B 看来就像 A 不存在一样。加上 reetrant 后,说明此函数是 可重复调用的。显然 reetrant 修饰符会使单片机额外开发寄存器来保存第一次调用时变量的 值,会增加资源的开销。
c51 中一个完整的函数定义从先到后包括存储类型说明、类型说明、标识符、修饰符部 分、存储模式共 5 部分。完整的表格如下:
[存储类型说明符] [类型说明] [存储模式]
static
unsigned char
函数名
extern
small
unsigned
compact
int
large
unsigned long
关于位运算:在 keil 中定义位用 sbit 声明,第几位用符号“^”表示,如 sbit ck=P1^0 定义 ck 为 P1.0 口。bit 跟 sbit 的区别是一种是定义,一种是声明。bit 是定义一个变量,然后将寄存 器的某一位赋值给变量(如 P1.1 的值给变量 a)。而 sbit 是声明一个变量,声明后这个变量和 寄存器的某一位等价,地址空间相同(如 P1.1 声明变量 a,以后 a 可以代表 P1.1 使用)。还有 一个跟一般 c 语言不同点是在 keil 中为求反可以使用符号 “~”,当然也可以使用原来的“!”,其他与啊或啊都跟原来 c 语言相同,不再赘述。
本人也刚刚处于起步阶段,写的不是很全面,有些地方写得不是很好,可能也存在一定
错误,望大家批评指正。
下面附上一段简单程序,此程序在 P2.3 和 P2.6 脚输出 T=3ms 的方波,在 P2.0 管脚输出 T=1s 的方波,在 keil 下编译无误并在 s52 上稳定运行,所用晶振 12M^_^
#include<reg52.h> sbit ckl=P2^3; sbit ckr=P2^6; sbit p20=P2^0; unsigned int j; void clock_initial() reentrant { TR2=0; TH2=0xFA; TL2=0x24; TR2=1; } void main() { T2CON=0x00; //计时器 T2 工作方式选择 TF2=0; ckl=0; ckr=0; clock_initial(); ET2=1; EA=1; for( ; ; ); } void clk_int(void) interrupt 5 // 中断函数 { j=j+1; TF2=0; ckl=~ckl; ckr=~ckr; if(j==333) {p20=~p20; j=0;} clock_initial();
是 extern。
【类型说明】一共 11 种,比较重要。 1、unsigned char:无符号字符型,长度 8 位,大小范围 0-255。因为和单片机位数一致, 可以看成跟汇编里的 A 和 R 是一样的,是 c51 中用的最多的类型了。如果变量范围不超过 256,那你就毫不犹豫的在标识符前面写上它吧。 2、char:唯一和上面有区别的是它是有符号的 8 位,大小范围 -128-127。 3、unsigned int:无符号整型,长度 16 位,大小范围 0-65535。如果你实在没有办法把变 量控制在 256 之内,那么就用它吧。65535 应该够用了吧?如果还不够,对你的编程能力要 怀疑一下了。 4、int:就像 char 和 unsigned char 的区别一样,int 唯一和上面不同的只是符号问题。大小 范围-32768-32767。 5、void:无值型,也经常用到的一种类型,长度为 0。表示函数不返回值实际编程时用到以 上 5 种类型已经足够了,以下几种仅做友情介绍。 6、 unsigned long: 无符号长整型,长度 32 位 大小范围 0-4294967295(好大啊)。很少 用到,基本上不用到。要知道你定一个 unsigned long 我们的单片机可要让出 4 个寄存器给 你了,对于资源有限的 51 系列单片机,这是相当奢侈的做法。 7、long:不再多讲了,跟 5 的区别只是符号,也是基本上不用到的。 8、float:符点型 32 位。也是相当奢侈的做法,建议不用 9、double:符点型 64 位。最奢侈的做法! 10、struct:结构型。 11、union:联合型。
【存储模式】: 共 3 种,分别是 small、compact、large。 1. Small 模式 指所有缺省变量参数均装入内部 RAM,优点是访问速度快,缺点是空间有限,只适用于小 程序。 2. Compact 模式 所有缺省变量均位于外部 RAM 区的一页(256Bytes),具体哪一页可由 P2 口指定,在 STARTUP.A51 文件中说明,优点是空间较 Small 为宽裕速度 较 Small 慢,较 large 要快,是一种中间状态。 3. large 模式 所有缺省变量可放在多达 64KB 的外部 RAM 区,优点是空间大,可存变量多,缺点是速度 较慢。 可以按照自己程序的大小来定哪种模式。
相关文档
最新文档