版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机高级语言c51程序设计1单片机高级语言c51程序设计2一.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 比较单片机高级语言c51程序设计3 9.code存储类型 10.存储模式 11.指针 11.1.通用指针 11.2.存储器指针 11.3.存储器指针和
2、通用指针的比较四.编译预处理命令 1.c51的stdio.h 2.c51的reg51.h(1)五.c51语言的程序流程控制 1.if语句 2.switch case语句 3.while和 do while 循环语句 4.for 循环语句单片机高级语言c51程序设计4六.函数 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. c5
3、1编译练习程序text.c单片机高级语言c51程序设计5八.c51的应用 1. 8051串行口扩展led显示器接口与应用 2. dac转换的接口与应用 3. adc0809应用举例九.课本例题简介 1.例8-2 2.例8-5 3.例8-7 4.例8-8十.加一减一综合实践c51程序设计单片机高级语言c51程序设计6单片机高级语言c51程序设计7单片机高级语言c51程序设计8单片机高级语言c51程序设计9char data a,b,c,d;main()a=2;b=a; 等效b=(a)c=a+b; 等效c=(a+b) c51程序经wave6000编译后,点窗口-cpu窗口产生的界面:a/08hb/
4、09hc/0ah变量a,b,c分别对应于内部数据存储器地址08h,09h,0ah.单片机高级语言c51程序设计10单片机高级语言c51程序设计11单片机高级语言c51程序设计12单片机高级语言c51程序设计13单片机高级语言c51程序设计14单片机高级语言c51程序设计15单片机高级语言c51程序设计16单片机高级语言c51程序设计17单片机高级语言c51程序设计18单片机高级语言c51程序设计19单片机高级语言c51程序设计20单片机高级语言c51程序设计21单片机高级语言c51程序设计22单片机高级语言c51程序设计23单片机高级语言c51程序设计24单片机高级语言c51程序设计25单片机
5、高级语言c51程序设计26单片机高级语言c51程序设计271.绝对宏#include /加进包含文件#define adc0809 xbyte0x7ff8 /定义一个绝对地址rval=cbyte0x006; /对一个绝对地址(字节)进行读rval=xword0x002; /对一个绝对地址(字)进行读dbyte0x0002=5; /对一个绝对地址(字节)进行写pword0x002=57; /对一个绝对地址(字)进行写单片机高级语言c51程序设计282._at_关键字char xdata adc0809; /定义一个变量adc0809_at_0 xfff8; /将某变量固定在某地址上单片机高级语言
6、c51程序设计29单片机高级语言c51程序设计30单片机高级语言c51程序设计31单片机高级语言c51程序设计32单片机高级语言c51程序设计33单片机高级语言c51程序设计34单片机高级语言c51程序设计35单片机高级语言c51程序设计36单片机高级语言c51程序设计37单片机高级语言c51程序设计38单片机高级语言c51程序设计39单片机高级语言c51程序设计40单片机高级语言c51程序设计41单片机高级语言c51程序设计42单片机高级语言c51程序设计43单片机高级语言c51程序设计44单片机高级语言c51程序设计45格式:alien 返回类型 函数名(参数表) 编译属性重入属性中断属性
7、寄存器组属性 alien -用alien,指示该函数按pl/m51函数的方式进行参数传递;缺省按c51方式进行。返回类型 -增加了bit型,缺省,函数返回int(不是void)。函数名 -大小写敏感,最多256字符。一般使用字母、数字、下划线,但数字不能打头。参数表 -最多32个参数。编译属性 -small、compact、large三种。重入属性 -用reertrant说明该函数按可重入函数进行处理,缺省则说明该函数为不可重入函数。中断属性 -用“interrupt 中断编号”说明该函数是中断函数,缺省则说明该函数为非中断函数。寄存器组属性-用“using 工作寄存器组编号“说明所用的寄存器
8、组号,缺省则说明使用寄存器组0。单片机高级语言c51程序设计46单片机高级语言c51程序设计47单片机高级语言c51程序设计481.例1-求数学式单片机高级语言c51程序设计49 void main() delay(10); 单片机高级语言c51程序设计50单片机高级语言c51程序设计51单片机高级语言c51程序设计52单片机高级语言c51程序设计53单片机高级语言c51程序设计54单片机高级语言c51程序设计55单片机高级语言c51程序设计56 运行wave6000软件(要先装keil编译器); 新建一.c源程序并保存; 新建一项目(文件-新建项目),然后自动分三步进行: a)、加入模块文件
9、。选择.c文件再打开。 b)、加入包含文件。如果没有包含文件(源程序#include所包含的所有文件)。 c)、保存项目。在打开的窗口中输入项目名称(名称可自定,扩展名.prj可不加,软件会自动添加)。 编译调试。(其它的设置同汇编程序)单片机高级语言c51程序设计577.2. uvision3集成开发环境集成开发环境单片机高级语言c51程序设计58uvision3集成开发环境操作步骤集成开发环境操作步骤 运行keil 51软件; 新建一.c的源程序并保存; 新建一项目(文件-新建-新建过程),接着选择所要的单片机(如at89c51); 然后加入一.c的源程序(如右图);单片机高级语言c51程
10、序设计59 做必要的设置,编译后生成.hex文件(如右图,下方图中应选中产生.hex文件); 编译调试。单片机高级语言c51程序设计60单片机高级语言c51程序设计61单片机高级语言c51程序设计62单片机高级语言c51程序设计63org 0000hstart:mov p1,#00hmov p0,#0ffhstl:jb p0.0,$ jnb p0.0,$ cpl p1.0 sjmp stl end单片机高级语言c51程序设计64#include sbit p00=p00;sbit p10=p10;void delay(unsigned char n)unsigned char i,j; for
11、(i=0;in;i+) for(j=0;j125;j+);void main()p1=0x00;while(1) if(p00=0) delay(10); if(p00=0)while(!p00);p10=!p10; 单片机高级语言c51程序设计65单片机高级语言c51程序设计66单片机高级语言c51程序设计67单片机高级语言c51程序设计68单片机高级语言c51程序设计69单片机高级语言c51程序设计70单片机高级语言c51程序设计71单片机高级语言c51程序设计72单片机高级语言c51程序设计73单片机高级语言c51程序设计74#include#include#define adc0809
12、 xbyte0x7ff8 /char xdata adc0809;adc0809_at_0 xfff8;/要分两句写unsigned char code buf16=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;unsigned char data temp,wei1,wei2;sbit p34=p34;sbit p35=p35;sbit p25=p25;sbit p26=p26;单片机高级语言c51程序设计75void delay(unsigned
13、 char n)unsigned char i,j; for(i=0;in;i+) for(j=0;j4;p1=bufwei1;p35=1;delay(2);p35=0;p1=bufwei2;p34=1;delay(2);p34=0;单片机高级语言c51程序设计76void main()th1=255; tl1=31; tmod=0x00; et1=1; ea=1; tr1=1; while(1) adc0809=0; / xbyte0x7ff8=0; /可用 while(p25=0); while(p25=1); temp=adc0809; / temp=xbyte0x7ff8;/可用 di
14、splay(); 单片机高级语言c51程序设计77void t11() interrupt 3th1=255; tl1=31; p26=!p26;单片机高级语言c51程序设计78地址有锁存单片机高级语言c51程序设计79单片机高级语言c51程序设计80单片机高级语言c51程序设计81单片机高级语言c51程序设计82单片机高级语言c51程序设计83单片机高级语言c51程序设计84单片机高级语言c51程序设计85单片机高级语言c51程序设计86按课本图7-14输出正弦波单片机高级语言c51程序设计87单片机高级语言c51程序设计88单片机高级语言c51程序设计89单片机高级语言c51程序设计90单
15、片机高级语言c51程序设计91单片机高级语言c51程序设计92 用如下的电路图,实现:按“加一”按钮显示加“1”,按“加二”按钮显示加“2”,按“减一”按钮显示减“1”,按“减二”按钮显示减“2”;计数的最大值为19,最小值为0;按“清0”按钮显示“0”(清0)。单片机高级语言c51程序设计93单片机高级语言c51程序设计94#includereg51.h/头文件#includemath.h/头文件unsigned char code disp_code10= 0 x3f, /0 0 x06, /1 0 x5b, /2 0 x4f, /3 0 x66, /4 0 x6d, /5 0 x7d,
16、/6 0 x07, /7 0 x7f, /8 0 x6f, /9 ;单片机高级语言c51程序设计95/定义sbitp20=p20;sbitp21=p21;sbitp22=p22;sbitp23=p23;sbitp36=p36;unsigned int count;/定义计数变量void delay(unsigned char n)/延时子程序unsigned char i,j;for(i=0;in;i+)for(j=0;i125;i+);单片机高级语言c51程序设计96void initial()/初始化程序ea=1;ex0=1;ex1=1;it1=1; /选择int1为脉冲触发方式 it0=1;tmod=0 x66;/t1模式2,自动重装th1=tl1=th0=tl0=0 xff;/计数一次中断et1=et0=1;tr1=tr0=1; 单片机高级语言c51程序设计97display()/显示子程序 unsigned int temp;unsigned char disp_c4,i;temp=count;for(i=0;i=19)count=0;else count+; void count_interrupt1() interrupt 1 /t0中断子程序if(count=19)count=0;else co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市浦东新区南片联合体2025-2026学年初三教学质量统一检测试题(一)物理试题试卷含解析
- 2026年【中考猜想】福建省全国初三2月大联考(全国卷)数学试题含解析
- 2026年大学大一(经济学原理实训)经济学实训综合测试试题及答案
- 患者权利与神经内科护理伦理
- 2025年前台防疫接待礼仪高频题
- 护理专业护理心理护理课件
- 护理时间管理:减少工作失误的方法
- 《美容消毒与卫生管理》医学美容技术专业全套教学课件
- 2026三年级数学上册 分数的实际应用
- 2026四年级数学下册 0加任何数的运算
- 高中英语必背3500单词表完整版
- 土木工程专业认识教育课件
- 动脉血气分析六步法杜斌
- 软体家具、沙发质量检验及工艺
- 全套电子课件:数据结构(C语言版)(第三版)
- 建设项目工程造价管理办法
- 测量管理体系标准宣贯ppt课件
- 2020年小学中高年级书法教程ppt课件
- 前期手续横道图
- 计算机各种进制转换练习题(附答案)参考模板
- MFB60T系列自动封边机
评论
0/150
提交评论