版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机高级语言C51程序设计1本章目录1一.C51语言的特点及其程序结构1.C51特点2.C51程序结构二.C51语言的标识符和关键字1.C51扩展的标识符2.C51扩展的关键字三.C51的数据类型及运算符1.根本数据类型的长度2.C51语言的扩展3.特殊功能存放器的数据类型4.DATA存储类型5.BDATA存储类型6.IDATA存储类型7.PDATA和XDATA存储类型8.PDATA和XDATA比较29.CODE存储类型10.存储模式11.指针11.1.通用指针11.2.存储器指针11.3.存储器指针和通用指针的比较四.编译预处理命令1.C51的STDIO.H2.C51的REG51.H(1)五.C51语言的程序流程控制1.IF语句2.SWITCHCASE语句3.While和dowhile循环语句4.For循环语句本章目录23六.函数1.函数格式2.重入函数3.中断效劳函数七.C51程序设计举例1.例1---求数学式2.例2---简单控制3.例3---延时4.例4---使用定时器0定时---查询方式5.例5---使用定时器0定时---中断方式6.例6---利用定时器1计数7.C51开发环境7.1.伟福模拟软件7.2.uVision3集成开发环境7.3.C51编译练习程序TEXT.C本章目录34本章目录4八.C51的应用1.8051串行口扩展LED显示器接口与应用2.DAC转换的接口与应用3.ADC0809应用举例九.课本例题简介
1.例8-22.例8-53.例8-74.例8-8十.加一减一综合实践C51程序设计5一.C51语言的特点及其程序结构61.C51特点72.C51程序结构83.C51与汇编语言chardataa,b,c,d;main(){a=2;b=a;等效b=(a)c=a+b;等效c=(a+b)}C51程序经WAVE6000编译后,点窗口---CPU窗口产生的界面:a/08Hb/09Hc/0AH变量a,b,c分别对应于内部数据存储器地址08H,09H,0AH.9二.C51语言的标识符和关键字10C51扩展的关键字11三.C51的数据类型及运算符121.根本数据类型的长度132.C51语言的扩展143.特殊功能存放器的数据类型154.DATA存储类型165.BDATA存储类型176.IDATA存储类型187.PDATA和XDATA存储类型198.PDATA和XDATA比较209.CODE存储类型2110.存储模式2211.指针2311.1.通用指针2411.2.存储器指针2511.3.存储器指针和通用指针的比较2612.绝对地址的访问1.绝对宏#include<absacc.h>//加进包含文件#defineADC0809XBYTE[0X7FF8]//定义一个绝对地址rval=CBYTE[0X006];//对一个绝对地址(字节)进行读rval=XWORD[0X002];//对一个绝对地址(字)进行读DBYTE[0X0002]=5;//对一个绝对地址(字节)进行写PWORD[0X002]=57;//对一个绝对地址(字)进行写272._at_关键字charxdataADC0809;//定义一个变量ADC0809_at_0xFFF8;//将某变量固定在某地址上28四.编译预处理命令291.C51的STDIO.H(1)301.C51的STDIO.H(2)312.C51的REG51.H(1)322.C51的REG51.H(2)332.C51的REG51.H(3)342.C51的REG51.H(4)352.C51的REG51.H(5)362.C51的REG51.H(6)372.C51的REG51.H(7)38五.C51语言的程序流程控制391.IF语句402.SWITCHCASE语句413.While和dowhile循环语句424.For循环语句43六.函数441.函数格式格式:[Alien][返回类型]函数名(参数表)[编译属性][重入属性][中断属性][存放器组属性]Alien---用Alien,指示该函数按PL/M51函数的方式进行参数传递;缺省按C51方式进行。返回类型---增加了bit型,缺省,函数返回int(不是void)。函数名---大小写敏感,最多256字符。一般使用字母、数字、下划线,但数字不能打头。参数表---最多32个参数。编译属性---small、compact、large三种。重入属性---用reertrant说明该函数按可重入函数进行处理,缺省那么说明该函数为不可重入函数。中断属性---用“interrupt中断编号〞说明该函数是中断函数,缺省那么说明该函数为非中断函数。存放器组属性---用“using工作存放器组编号“说明所用的存放器组号,缺省那么说明使用存放器组0。452.重入函数463.中断效劳函数47七.C51程序设计举例1.例1---求数学式48例3---延时
voidmain(){delay(10);}49例4---使用定时器0定时(查询方式)(1)50使用定时器0定时---查询方式(2)51例5---使用定时器0定时(中断方式)52例6---利用定时器1计数(1)53利用定时器1计数(2)547.C51开发环境开发环境:伟福模拟软件55伟福模拟软件C51开发操作步骤运行WAVE6000软件(要先装KEIL编译器);新建一.C源程序并保存;新建一工程(文件-新建工程),然后自动分三步进行:A〕、参加模块文件。选择.C文件再翻开。B〕、参加包含文件。如果没有包含文件(源程序#INCLUDE所包含的所有文件)。C〕、保存工程。在翻开的窗口中输入工程名称〔名称可自定,扩展名.PRJ可不加,软件会自动添加〕。编译调试。〔其它的设置同汇编程序〕567.2.uVision3集成开发环境57uVision3集成开发环境操作步骤运行KEIL51软件;新建一.C的源程序并保存;新建一工程(文件-新建-新建过程),接着选择所要的单片机(如AT89C51);然后参加一.C的源程序(如右图);58操作步骤(续)做必要的设置,编译后生成.HEX文件〔如右图,下方图中应选中产生.HEX文件〕;编译调试。597.3C51编译练习程序TEXT.C60八.C51的应用61按钮判断(1)62按钮判断(2)org0000hstart:movp1,#00hmovp0,#0ffhstl:jbp0.0,$jnbp0.0,$cplp1.0sjmpstlend63按钮判断(3)#include<reg51.h>sbitP00=P0^0;sbitP10=P1^0;voiddelay(unsignedcharn){unsignedchari,j;for(i=0;i<n;i++)for(j=0;j<125;j++);}voidmain(){P1=0X00;while(1){if(P00==0){delay(10);if(P00==0) while(!P00); P10=!P10;}}}641.8051串行口扩展LED显示器接口与应用65LED显示器接口与应用程序(1)66LED显示器接口与应用程序(2)67 2.DAC转换的接口与应用68DAC0832产生锯齿波程序(1)69DAC0832产生锯齿波程序(2)70DAC0832产生梯形波程序(1)71DAC0832产生梯形波程序(2)723.ADC转换的接口与应用(1)73程序(1)#include<reg51.h>#include<absacc.h>#defineADC0809XBYTE[0X7FF8]
//charxdataADC0809;ADC0809_at_0xFFF8;//要分两句写unsignedcharcodebuf[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};unsignedchardatatemp,wei1,wei2;sbitP34=P3^4;sbitP35=P3^5;sbitP25=P2^5;sbitP26=P2^6;74程序(2)voiddelay(unsignedcharn){unsignedchari,j;for(i=0;i<n;i++)for(j=0;j<125;j++);}voiddisplay(){wei1=temp&0x0f;wei2=temp>>4;P1=buf[wei1];P35=1;delay(2);P35=0;P1=buf[wei2];P34=1;delay(2);P34=0;}75程序(3)voidmain(){TH1=255;TL1=31;TMOD=0X00;ET1=1;EA=1;TR1=1;while(1){ADC0809=0;//XBYTE[0X7FF8]=0;//可用
while(P25==0);while(P25==1);temp=ADC0809;//temp=XBYTE[0X7FF8];//可用
display();}}76程序(4)voidt11()interrupt3{TH1=255;TL1=31;P26=!P26;}773.ADC转换的接口与应用(2)地址有锁存78ADC0809应用举例79ADC0809应用C51程序(1)80ADC0809应用C51程序(2)81中断效劳软件设计82九.课本例题选介83例8-284例8-585例8-7(1)按课本图7-14输出正弦波86例8-7(2)87例8-8(1)88例8-8(2)89例8-8(3)90例8-8(4)91十.加一减一综合实践C51程序设计用如下的电路图,实现:按“加一〞按钮显示加“1〞,按“加二〞按钮显示加“2〞,按“减一〞按钮显示减“1〞,按“减二〞按钮显示减“2〞;计数的最大值为19,最小值为0;按“清0〞按钮显示“0〞〔清0〕。92电路图93程序〔1〕#include"reg51.h"//头文件#include"math.h"//头文件unsignedcharcodedisp_code[10]={ 0x3F,//"0"0x06,//"1"0x5B,//"2"0x4F,//"3"0x66,//"4"0x6D,//"5"0x7D,//"6"0x07,//"7"0x7F,//"8"0x6F,//"9"};94程序〔2〕//定义sbit P20=P2^0;sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit P36=P3^6;unsignedintcount; //定义计数变量voiddelay(unsignedcharn)//延时子程序{ unsignedchari,j; for(i=0;i<n;i++) for(j=0;i<125;i++);}95程序〔3〕voidinitial()//初始化程序{ EA=1; EX0=1; EX1=1; IT1=1;//选择INT1为脉冲触发方式
IT0=1; TMOD=0x66;//T1模式2,自动重装
TH1=TL1=TH0=TL0=0xff;//计数一次中断
ET1=ET0=1; TR1=TR0=1;}96程序〔4〕display() //显示子程序{unsignedinttemp; unsignedchardisp_c[4],i; temp=count; for(i=0;i<4;i++) { //拆字程序
disp_c[i]=temp%10; temp=temp/10; } P0=disp_code[disp_c[0]];P23=0;delay(2);P23=1;P0=disp_code[disp_c[1]];P22=0;delay(2);P22=1;P0=disp_code[disp_c[2]];P21=0;delay(2);P21=1;P0=disp_code[disp_c[3]];P20=0;delay(2);P20=1;}97程序〔5〕voidq0()//清0子程序{if(P36==0)//P36为高,退出;P36为低,运行下面的语句{delay(10);//消抖if(P36==0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京师范大学海口附属学校招聘事业编制人员笔试真题及答案
- 2026年北师大版小学数学一年级上册第一单元《生活中的数》全单元教学设计
- 2028年企业并购与重组合同二篇
- 幼儿园老带新招生活动方案
- (2026年)职业技能鉴定国家题库装配钳工中级理论知识试卷
- 商场治安管理制度2篇
- 2026璧山教师面试题及答案
- 优生优育TORCH全套筛查
- 2025年中国甘草精市场调查研究报告
- 2025年中国特氟龙波纹管式密封环市场调查研究报告
- 初三道德与法治中考复习:开放性设问之倡议书、标语与活动方案专项突破教案
- 2026中国主题公园行业市场调研及消费趋势与投资机会研究报告
- 2026届陕西西安高考物理模拟卷(原卷版)
- 长期照护师职业技能鉴定考试复习题库(附答案)
- 2026年大学财务处招聘考试专业知识模拟题
- 2025年荣耀AI隐私安全白皮书
- 2026届山东省聊城市临清市重点达标名校中考押题生物预测卷含解析
- 太阳能光热发电课件
- 2026中复神鹰碳纤维西宁有限公司招聘40人考试参考试题及答案解析
- 关于取消原定采购订单的通知函8篇
- 2025 地中海气候的特点和成因课件
评论
0/150
提交评论