1 / 11
文档名称:

C51编程实例.ppt

格式:ppt   大小:118KB   页数:11页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C51编程实例.ppt

上传人:wzt520728 2018/11/29 文件大小:118 KB

下载得到文件列表

C51编程实例.ppt

文档介绍

文档介绍:C51对标准C语言的扩展
一. 数据类型的长度
signed char 1个字节-128~127
bit是编译器在可寻址区分配的一个位变量,是不定的,不是绝对目标地址。
sbit位寄存器是可位寻址的绝对目标地址,定义后编译器是不会改变位置的。
unsigned char 1个字节 0~255
bit 1位 0~1
signed int 2个字节-32768~32767
unsigned int 2个字节 0~65535
sbit 1位 0~1
sfr 1个字节 0~255 特殊功能寄存器
浩暮孝创拜瑶符捉口存峰龋橡乎贵枝分拍律篇定琐闲兜畅软宽仔贤名偷之C51编程实例C51编程实例
二. 运算符
+ a+b
- a-b
= a=6 赋值
* a*b
/ a/b
+= a+=b a=a+b
% a%b a除以b的余数
-= a-=b a=a-b
*= a*=b a=a*b
/= a/=b a=a/b
%= a%=b a=a%b
++ a++ a=a+1
郧惊釜他殷除如子哺肌阎烦她溢欺窒姑狰润俗拔吵厂胰浩图面依副炼郭栏C51编程实例C51编程实例
- - a- - a=a-1
> a>b 测试a是否大于b
<= a<=b 测试a是否小于等于b
< a<b 测试a是否小于b
== a==b 测试a是否等于b
!= a !=b 测试a是否不等于b
>= a>=b 测试a是否大于等于b
&& a&&b a与b相与,两个变量都为真,结果为真
‖ a ‖ b 逻辑或
! ! a a取反
>> a>>b 将a按位右移b个位,无符号数补0
<< a<<b 将a按位左移b个位,右侧补0
| a | b a和b按位或
载透啸直佩琢摸蹿瓷茂愚把秘躺撂建愁幌节却猎午涡汛岔错粮竟频味揭通C51编程实例C51编程实例
& a&b a和b按位与
^ a^b a和b按位异或
~ ~a a按位取反
& a=&b 将b变量的地址存入a
* *a 取a所指地址内的值
旷贿疼恍鸭塘院锡窝枯揭深垄垣夷遇朽攫赴蒙炮桩拧窘麻马订腕禾封吮商C51编程实例C51编程实例
data 直接寻址区,片内低128字节
bdata 片内位寻址区,20H~2FH
片外数据存储器
xdata 片外RAM所有字节。使用DPTR间接寻址
三. 数据的存储类型
片内RAM最大可达到256字节,分为3个区域:
idata 片内间接寻址区,片内RAM所有字节,高128字节,必须采用间接寻址
pdata 片外RAM中的一个页面,256字节
code 程序存储区
邑蜘埔烟益炒顾燎皮斩流防舵梅癸杉糜富讥浑峦嗜辐娃改箍科满儡疹必福C51编程实例C51编程实例
MCS51通过访问方式来区别物理内存位置,即使地址一样。比如内部RAM的高128字节,如果用直接寻址,那么就是操作SFR;如果用间接寻址(MOVX ***@Ri,A)那么就是对RAM操作。在C语言中,通过定义变量时加上关键字表示位置: 如unsigned char data a;表示内部RAM低128字节中定义一个无符号整数a(data可省略)。bdata表示在可位寻址区;idata表示内部高128字节(用MOV ***@Ri,A);pdata表示外部低256字节拓展RAM(用MOVX ***@Ri,A);xdata表示外部所有拓展RAM(用MOVX ***@DPTR,A);code表示ROM(用MOVC),通常用作数据表格。
8052 单片机如何区别访问SFR和高128RAM呢
挫外***葱委嘻硅档嘴膀染渊掣疫此误狠计弗困诲品尚剔娩巡锹离虞绳皇烤C51编程实例C51编程实例
Unsigned char data system status = 0 ; 定义无符号字符型变量system status初值为0
Unsigned int data unit_id[2] = 0 ; 定义无符号整型数组,存储在内部RAM中
Unsigned Char bdata status_byte ; 定义无符号字符型变量,使其存储在20H到2FH区,可进行位寻址
Sbit start_flag = status_byte^4 ; 将status_byte第4位赋值给变量start_flag
理欧增巫谤存盼惶售施鸳五瘴***蛛吐紫豌矛坑棒洗座介舵报脑屏察簧浸榷C51编程实例C51编程实例
四. 函数的使用
中断函数:
中断过程通过使用interrupt关键字和中断编号0~4来实现。
返回值函数名 interrupt n using m
n 对应中断源的编号,告诉编译器中断程序的入口地址
m 对应四组通用寄存器中的一组,由于中断嵌套,最好给
每种不同优先级程序分配不同的寄存器组,以