第9章-单片机的C语言编程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如: #include <reg51.h> sbit P2_7=P2^7; //P2_7 定义为P2 的第7 位
sbit acc_0=ACC^0; //acc_0 定义为ACC 的第0 位
第二十一页,共33页。
(2)sbit位变量名=位地址 sbit P1_1 = 0x91; sbit CY = 0xD7; sbit EA = 0xAF;
(3)sbit 字节地址^位位置 该变量用一个整常数作为sbit的基地址,基地址值
必须能被8整除。“^”后面的表达式指定位的位置, 必须在0~7之间。例如: sbit OV = 0xe0^2; //指定地址为0xe0的第2位为OV, 即溢出标志
第二十二页,共33页。
9.5 C51的函数和运算符
unsigned char data system_status=0;
unsigned int data unit_id[2];
char data inp_string[16];
float data outp_value;
mytype data new_var;
第十四页,共33页。
BDATA区实际就是DATA区中的位寻址区,在这 个区声明变量就可进行位寻址。BDATA区声明中 的存储类型标识符为bdata,指内部可位寻址的 16B存储区(20H~2FH)可位寻址变量的数据类型。
第二十页,共33页。
3. sbit (1)sbit位变量名=SFR寄存器名^位位置 sfr PSW = 0xD0; //声明PSW为特殊功能寄存器,地
址为0xD0 sbit EA=IE^7; //指定IE的第7位为EA,即中断允

sbit P0_1=P0^1; //P0_1 定义为P0 的第1 位 一般可把特殊功能寄存器的声明放在一个头文件中,例
C51程序的基本结构如下所示,包含五个部 分(① ~ ⑤):
#include <xxxx1.h> /*预处理文件*/①
#include <xxx2.c>
全局变量说明 变量*/②
/*可被程序中所有函数引用的
……
function1(形参列表); /*函数1声明*/③
……
functionN(形参列表); /*函数N声明*/
unsigned char bdata status_bute;
unsigned int bdata status_word; unsigned long bdata status_dword;
sbit stat_flag=status_byte^4; if(status_word^15) {…} stat_flag=1;
第十页,共33页。
团 结 协 作 、形 成凝聚 力是教 研组建 设的前 提。下 面是小 编整理 提供的 教研组 工作计划 范 文 , 欢 迎 阅读参 考!希 望大家 采纳! 更多相 关信息 请关注 美文网 的栏目 ! 篇 一 一 、 基 本 情 况: 综 合 组 本学 期共有 教师11人 ,分 别担任 英语、 心理、 科学和 信息技术 的 教学工 作。综 合组工 作有其 特色和 活力, 但由于 课程综 合性较 强,所 担任科 目也不 一样, 教 研 组 工 作 的开展 仍需各 位教师 加强团 队合作 精神, 共同探 讨。 二 、 指 导思 想 根 据 学 校 总 体 工作计 划的安 排和教 导室的 教研工 作安排 ,认真 学习先 进的教 育思想 和新的课 程 标 准 、 积 极实践 课改理 念,全 面深化 素质教 育,以 更新观 念为前 提,以 提高师 资整体素 质 为 核 心 , 紧紧围 绕“课 堂教学 ”这一 主线, 结合本 校特点 ,加强 教学研 究,不 断解决教 学 中 的 新 问 题,更 新教学 观念, 改变教 师的教 学行为 和学生 的学习 方式, 使我组 教学质量 稳 中 有 升 。 三 、 工 作 重点及 要求: 1.认 真 做 好 新课 程实验 工作, 最大限 度地提 高 课 堂 教 学 效 果。 2.加 强 组 内 教研, 做好听 课评课 工作, 使组内 教师课 堂教学 水平得 以 提 高 。 认 真 备课, 学习各 学科的 课程标 准,加 强集体 备课, 提高备 课质量 ,为上 课做好准
printf("helloworld! \n"); //显示Hello World! } }
第七页,共33页。
9.2 C51的数据类型
C51 的数据分为常量和变量。 常量是在程序的运行过程中不能被改变的量,变量是
在程序运行过程中可以被改变的量。
变量由变量名和变量的内容构成。变量名指出了变 量存放的位置,其内容就是变量的值。
函数函数nn声明声明第九章单片机的c语言编程main主函数程序入口主函数程序入口局部变量说明局部变量说明只能在本函数体内引用的变量只能在本函数体内引用的变量执行语句执行语句包括可能的函数调用语句等包括可能的函数调用语句等第九章单片机的c语言编程function1function1形参列表形参列表函数函数1形参说明形参说明局部变量说明局部变量说明执行语句执行语句包括可能的函数调用语句等包括可能的函数调用语句等functionnfunctionn形参列表形参列表函数函数n形参说明形参说明局部变量说明局部变量说明执行语句执行语句包括可能的函数调用语句等包括可能的函数调用语句等第九章单片机的c语言编程c51c51语言的基本规则如下
float idata outp_value;
第十六页,共33页。
4.PDATA 区和XDATA区 PDATA区和XDATA区属于外部存储区,最多可有
64KB,当然这些地址不是必须用作存储区的。但 PDATA区只有256B,而XDATA区可达到 65535B。。声明举例如下: unsigned char xdata system_status=0; unsigned int pdata unit_id[2]; char xdata inp_string[16];
第三页,共33页。
main( )
/*主函数,程序入口*/④
{
局部变量说明 /*只能在本函数体内引用的变量*/
……
C 执行语句 /*包括可能的函数调用语句等*/
……
}
第四页,共33页。
function1(形参列表) /*函数1*/⑤
形参说明
{ 局部变量说明
…… C 执行语句 /*包括可能的函数调用语句等*/ …… }
/*这是第一种注释方式*/ //这是第二种注释方式
SCON=0x50; //串行口方式1,允许接收 TMOD=0x20; //定时器1定时方式2
TCON=0x40; //设定时器1开始计数
TL1=0xE8;
TI=1; //设置TI发送第一个字符至串口 TR1=1; //启动定时器 while(1)
{
9.1 C51编程语言简介
9.1.1 C51编程语言
C语言与任何特定的硬件或系统无关。 C语言的代码效率高,可与汇编语言媲美。 既可以实现高级语言的模块化编程,又可以实现很多底
层的操作。
在对效率或硬件操作要求比较高的地方,一般采用 C语言和汇编语言联合编程的方法。
第一页,共33页。
C51语言具有的以下优点:
float pdata outp_value;
第十七页,共33页。
程序在存储区CODE中的数据是不可改变的,跳 转向量和状态表对CODE区的访问和对XDATA区 的访问时间是一样的。程序存储区声明举例如下:
unsigned int code unit_id[2]=1234;
unsigned char code a[ ]={
(3) 注释用/*……*/表示,或用//……表示(注意//只能注释 一行)。
(4) 花括号必须成对出现,书写位置不限。 下面是一段在C51学习中经常被引用的程序:
第六页,共33页。
#include <REGX51.H> //AT89X51 头文件
#include<stdio.h> void main() {
第九页,共33页。
9.2.2 C51变量的类型
定义一个变量的格式如下: [存储种类] 数据类型 [存储器类型] 变量名表
存储种类可分为两类四种:自动(auto)、外部 (extern)、静态(static)和寄存器(register), 缺省类型为自动(auto)。
自动和寄存器属于动态存储变量;外部和静态属于静 态存储变量。
第十二页,共33页。
9.3 数据的存储器类型和存储器模式
9.3.1 数据的存储器类型
第十三页,共33页。
DATA 区的寻址是最快的,所以应该把经常使用的 变量放在DATA区,但是空间有限。DATA区声明 中的存储类型标识符data,通常指低128B的内部数 据区存储的变量,可直接寻址。举例如下:
sfr16用来定义16位的特殊功能寄存器,如DPTR 通过名字或地址来引用特殊功能寄存器,地址必 须高于80H。许多新的8051派生系列单片机用两 个连续地址的SFR来指定16位值,例如8052用地 址0xCC和0xCD表示定时/计数器2的低和高字节, 如:
sfr16 T2=0xCC; /*表示T2 口低地址T2L=0xCC,高地 址T2H=0Xcd*/
无论变量还是常量,其实都是一个容器,它们的名字是 容器的地址,它们的内容是容器的值。
它们在存储器中具体的存储位置则是由编译器自动 进行安排的。
第八页,共33页。
C51常量的类型
(1)数值型常量 对于数值型常量可以用const和define来定义,如
int const a = 10; (2)符号型常量
(1) C51自动管理存储器的分配,无需考虑不同存储 器的寻址和数据类型等细节。
(2) 程序由函数构成,便于进行模块化程序设计。 (3) 子程序库丰富,大大减轻了编程的工作量。
(4) 可以与汇编语言交叉编程,使编程更加灵活方便, 便于提高程序的性能。
第二页,共33页。
9.1.2 C51的程序结构
从是否有参数来看,函数分为有参函数和无参函数。 有参函数在调用时用实际参数代替形式参数。函数要 将结果返回调用函数。
第二十三页,共33页。
9.5.1 函数 C 语言的函数分为库函数和自定义函数两种。C 编
译系统提供了一系列的标准函数。这些函数包含在 若干个头文件中。用户可以根据需要用#include命 令将有关的头文件包含在自己的程序中,这样用户 就可以用调用函数的方法使用这些库函数。自定义 函数是用户根据需要以函数的形式自己编写的程序。
(3)bit、sbit、sfr和sfr16数据类型用于8051硬件和C51编译器, 并不是标准C语言的一部分,不能通过指针进行访问。bit、 sbit、sfr和sfr16数据类型用于访问8051的特殊功能寄存器,例 如sfr P0 = 0x80,表示声明变量P0,并为其分配特殊功能寄存 器地址0x80。
sfr用来定义字节寻址的特殊功能寄存器,如:
sfr P0 = 0x80; //表示P0口地址为80Hsfr TMOD = 0x89; //定义定时器模式寄存器地址
sfr Acc = 0xc0; //定义累加器地址 sfr SCON = 0x98; //定义串行通信控制寄存器地址
第十九页,共33页。
…… functionN(形参列表) /*函数N*/
形参说明
{ 局部变量说明
C 执行语句 /*包括可能的函数调用语句等*/
}
第五页,共33页。
C51 语言的基本规则如下:
(1) 变量必须先说明后引用,所有符号对大小写敏感。
(2) 每条语句必须以分号“;”结尾,一行可以写多条语句, 一条语句也可以写多行。
0x00, 0x01,0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15
};
第十八页,共33页。
9.4 SFR、位变量、存储器和I/O接口的定义
9.4.1 特殊功能寄存器(SLeabharlann BaiduR)的定义 1. sfr
第十五页,共33页。
3.IDATA 区 IDATA区也可存放使用比较频繁的变量,使用寄存器
作为指针进行寻址,即在寄存器中设置8位地址进行间 接寻址。IDATA区声明中的存储类型标识符为idata, 指内部的256B的存储区,但是只能间接寻址,速度比 直接寻址慢。举例如下: unsigned char idata system_status=0; unsigned int idata unit_id[2]; char idata inp_string[16];
备 。 认 真 执 行学校 的上课 、听课 制度, 并通过 听课使 本组教 师
第十一页,共33页。
说明: (1) 字符型、整型和长整型数据均分为有符号型和无符号型 两种。有符号型数据以补码形式在内存中存放。
(2) 编译程序时,编译器自动进行数据类型转换。当运算符两边的数 据类型不同时,编译器将低级的数据类型转换为较高级的数据类型。 运算结果为高级数据类型。
相关文档
最新文档