单片机原理与应用技术6

上传人:腾**** 文档编号:51208585 上传时间:2018-08-12 格式:PPT 页数:22 大小:128KB
返回 下载 相关 举报
单片机原理与应用技术6_第1页
第1页 / 共22页
单片机原理与应用技术6_第2页
第2页 / 共22页
单片机原理与应用技术6_第3页
第3页 / 共22页
单片机原理与应用技术6_第4页
第4页 / 共22页
单片机原理与应用技术6_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机原理与应用技术6》由会员分享,可在线阅读,更多相关《单片机原理与应用技术6(22页珍藏版)》请在金锄头文库上搜索。

1、第六讲:C-51程序设计本讲重点:C-51的数据类型和存储类型;指针和中断的使用;通过实例消化理解C-51的编程方法;尝试将实验课中的ASM-51程序转为C-51程序.单片机原理与应用技术单片机原理与应用技术教学课件教学课件C语言作为一种非常方便的语言而得到广泛的支持 ,C语言程序本身不依赖于机器硬件系统,基本上不 作修改就可将程序从不同的单片机中移植过来。C提供了很多数学函数并支持浮点运算,开发效率 高,故可缩短开发时间,增加程序可读性和可维护 性。 C-51简介单片机原理与应用技术单片机原理与应用技术教学课件教学课件C-51与ASM-51相比,有如下优点:1. 对单片机的指令系统不要求了解

2、,仅要求 对8051 的存贮器结构有初步了解;2. 寄存器分配、不同存贮器的寻址及数据类 型等细节可由编译器管理;3. 程序有规范的结构,可分成不同的函数, 这种方式可使程序结构化;4. 具有将可变的选择与特殊操作组合在一起 的能力,改善了程序的可读性;5. 提供的库包含许多标准子程序,具有较强 的数据处理能力;6. 由于具有方便的模块化编程技术,使已编 好程序可容量地植入新程序;单片机原理与应用技术单片机原理与应用技术教学课件教学课件 C51的数据类型常用的数据类型有: C51的程序结构与一般C语言的结构相同,以main()函数为程序人 口,程序体中包含若干语句还可以包含若干函数。位型 字符

3、型 整型 长整型 浮点型 bit char int long int float 1位 1字节 2字节 4字节 4字节数组型 指针型单片机原理与应用技术单片机原理与应用技术教学课件教学课件 C-51数据的存储类型名 存储空间位置 长度 数据范围 data 直接寻址片内RAM 8位 0255 bdata 可位寻址片内RAM 1位 0/1idata 间接寻址片内RAM 8位 0255xdata 片外RAM 16位 065535 C-51的包含的头文件通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h常用有:reg51.h (定义特殊功能寄存器和

4、位寄存器);math.h (定义常用数学运算); 单片机原理与应用技术单片机原理与应用技术教学课件教学课件 C-51的运算符与C语言基本相同:+ - * / (加 减 乘 除) = #include #define uchar unsigned char /* 字形口 */ #define PORTA XBYTE0xffdc/* 字位口 */ #define PORTB XBYTE0xffdd/* 延时 1MS子程序 */ void msce(unsigned int x) unsigned char j;while(x-)!=0)for(j=0;jmain( ) int i;unsigned

5、 char xdata *p=0x2000; /* 指针指向2000H单元 */for(i=0;i main( ) unsigned char xdata *p=0x2000;/*指针指向2000H单元*/* 2002H单元高4位清零,低4位装2000H单元低4位 */ *(p+2)=(*p) /* 2001H单元高4位清零,低4位装2000H单元高4位 */ *(p+1)=(*p)4; 单片机原理与应用技术单片机原理与应用技术教学课件教学课件 汇编语言程序ORG 0000H L00: MOV R0,#10H ;查找16个字节MOV R1,#00HMOV DPTR,#2000H L11: MO

6、VX A,DPTRCJNE A,#00H,L16 ;取出内容与00H相等吗?INC R1 ;取出个数加1 L16: INC DPTRDJNZ R0,L11 ;未完继续MOV DPTR,#2100HMOV A,R1MOVX DPTR,A ;相同数个数送2100H L1E: SJMP L1E例4.查找零的个数(在2000H-200FH中查出有几个 字 节是零,把个数放在2100H单元中)单片机原理与应用技术单片机原理与应用技术教学课件教学课件查找零的个数C51程序#include main ( ) unsigned char xdata *p=0x2000;/*指针p指向2000H单元*/int

7、n=0,i;for(i=0;i main( ) unsigned int xdata *p1=0x2000;/*双字节被乘数在2000H单元*/unsigned int xdata *p2=0x2002;/*双字节乘数在2002H单元 */unsigned long xdata *p3=0x2010;/*4字节乘积放在2010H单元*/ *p3=(*p1)*(*p2); 单片机原理与应用技术单片机原理与应用技术教学课件教学课件例6.工业顺序控制C-51程序#include sbit P1_7=0x97; /* 定义P1.7口地址 */ unsigned char TT; void Delay(

8、unsigned int value) /* 延时子程序*/ while(value!=0) value-; void Serint1()interrupt 2 /*中断服务程序-暂停并报警*/ int i; TT=P1; /* 保护现场 */P1=0x7f; /* 关输出 */while(!INT1) /* 若故障未消除,则报警 */ for(i=0;i #include #define uchar unsigned char #define LEDwp XBYTE0xffdc #define LEDwb XBYTE0xffdd uchar code table10=0xc0,0xf9,0x

9、a4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; uchar hour=1,min=23,sec=45,m=0,n,i; /* 给时钟赋初值 */ uchar xdata *p; void Delay(unsigned int value) /*延时子程序*/while(value!=0) value-;单片机原理与应用技术单片机原理与应用技术教学课件教学课件void Trans(void) /*时间数据转换子程序*/ if(sec=60) min+;sec=0; if(min=60) hour+;min=0;if(hour=24) hour=0; *(p+0)=h

10、our/10; /* 时的十分位 */*(p+1)=hour%10; /* 时的个位*/*(p+2)=min/10; /* 分的十分位 */ *(p+3)=min%10; /* 分的个位 */*(p+4)=sec/10; /* 秒的十分位 */ *(p+5)=sec%10; /* 秒的个位 */ void Show(void) /*循环显示子程序*/ for(;) Trans( );LEDwb=n=0x20;for(i=0;i1; 单片机原理与应用技术单片机原理与应用技术教学课件教学课件/* 中断服务子程序(0.1秒中断一次) */ void time() interrupt 1 m+;TH0=0x3c; TL0=0xb7; /* 给 T0 赋计数初值 */if(m=10) sec=sec+1; m=0; main( ) p=0x2000; TMOD=0X01; /* T/C0工作在定时器方式1 */TH0=0x3c; TL0=0xb7; /* 给 T0 赋计数初值 */EA=1; /* CPU开中断 */TR0=1; /* 启动T/C0开始定时 */ET0=1; /* T/C0开中断 */Show( ); 单片机原理与应用技术单片机原理与应用技术教学课件教学课件OVER !单片机原理与应用技术单片机原理与应用技术教学课件教学课件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号