欢迎来到天天文库
浏览记录
ID:36291240
大小:356.31 KB
页数:27页
时间:2019-05-08
《c语言程序设计及仿真调试》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章C语言程序设计及仿真调试4.1C语言程序设计基础(自行复习)4.2KeilC4.3C语言程序设计及调试实例【例4-1】编程实现通过延时函数,由P1.0输出方波信号。解:C语言程序如下:#include“reg51.h”//8051寄存器定义头文件sbitP10=P1^0;//定义P1.0引脚voiddelay(longcnt)//延时函数{while(cnt>0)cnt--;}voidmain(void){P10=1;while(1)//主程序循环{delay(1000);P10=~P10;}}由P1.2口输出信号,如何修改程序?【例4-2】单片机
2、P1口的P1.0和P1.1各接一个开关K1、K2,P1.4、P1.5、P1.6和P1.7各接一只发光二极管。有K1和K2的不同状态来确定哪个发光二极管被点亮。K2K1亮的二极管00L101L210L311L4#include“reg51.h”voidmain(){chara;a=P1;a=a&0x03;//屏蔽高6位if(a==0)P1=0x83;elseif(a==1)P1=0x43;elseif(a==2)P1=0x23;elseP1=0x13;}将例2用while循环实现。#include“reg51.h”voidmain(){chara;whil
3、e(1){a=P1;a=a&0x03;//屏蔽高6位switch(a){case0:P1=0x83;break;case1:P1=0x43;break;case2:P1=0x23;break;case3:P1=0x13;}}}4.2KeilC一、C51数据类型与运算1.C51数据类型bit位变量bit位变量是可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1。bitlock;//将lock定义为位变量bitdirection;//将direction定义为位变量sbit可独立寻址的位变量利用它能访问芯片内部的RAM中
4、的可寻址位或特殊功能寄存器中的可寻址位。sbitCY=0xD7;//定义进位标志CY的地址为D7HsbitAC=0xD0^6;//定义辅助进位标志AC的地址为D6HsbitRS0=0xD0^3;//定义RS0的地址为D3Hsfr8位特殊功能寄存器sfr占用一个内存单元,值域为0~255。利用它能访问51单片机内部的所有特殊功能寄存器。例如:sfrPSW=0xD0;//定义程序状态字PSW的地址为D0HsfrTMOD=0x89;//定义定时器/计数器方式控制寄存器TMOD的地址为89HsfrP1=0x90;//定义P1口的地址为90Hsfr1616位特殊功
5、能寄存器sfr16占用两个内存单元,值域为0~65535。sfr16和sfr一样用于操作特殊功能寄存器,不同的是它用于操作占两个字节的寄存器,如定时器T2。sfr16T2=0xCC;//定义8052定时器2,低8位地址为//T2L=CCH,高8位T2H=CDH2.C51数据存储类型存储类型与存储空间的对应关系data直接寻址片内数据存储区,访问速度快(128字节)bdata可位寻址片内数据存储区,允许位与字节混合访问(16字节)idata间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pdata分页寻址片外数据存储区(256字节),由M
6、OVX@Ri访问xdata寻址片外数据存储区(64K字节),有MOVX@DPTR访问code寻址代码存储区(64K字节),有MOVC@DPTR访问chardatavar1;//字符变量charvar1被定义为data存储类型,定位在片内RAM中bitbdataflags;//位变量flags被定义为bdata存储类型,定位在片内RAM中的位寻址区(20H~2FH)floatidatax,y,z;//浮点变量x,y,z被定义为idata存储类型,定位在片内RAM中,并只能用间接寻址的方法进行访问unsignedintpdatadimension;//无符号
7、整型变量dimension被定义为pdata存储类型,定位在片外数据存储区,并用MOVX@Ri访问unsignedcharxdatavector[10][4][4];//无符号字符三维数组变量unsignedcharvector[10][4][4]被定义为xdata存储类型,定位在片外RAM中,占据10×4×4=160个字节空间unsignedcharcodea[]={0x00,0x01};//数组a[]被定义为code存储类型,定位在程序存储器中C51运算符、表达式及其规则位运算的操作对象只能是整型和字符型数据,不能是实型数据。C51提供以下六种位运算
8、。&(按位与)相当于ANL指令
9、(按位或)相当于ORL指令^(按位异或)相当于X
此文档下载收益归作者所有