C-51程序设计知识.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C-51程序设计知识.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 程序设计 知识
- 资源描述:
-
1、第六讲:C-51程序设计本讲重点:本讲重点:C-51C-51的数据类型和存储类型;的数据类型和存储类型;指针和中断的使用;指针和中断的使用;通过实例消化理解通过实例消化理解C-51C-51的编程方法;的编程方法;尝试将实验课中的尝试将实验课中的ASM-51ASM-51程序转为程序转为C-51C-51程序程序.C C语言作为一种非常方便的语言而得到广泛的支持,语言作为一种非常方便的语言而得到广泛的支持,C C语言程序本身不依赖于机器硬件系统,基本上不语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。作修改就可将程序从不同的单片机中移植过来。C C提供了很多数学函
2、数并支持浮点运算,开发效率提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护高,故可缩短开发时间,增加程序可读性和可维护性。性。C-51C-51简介简介C-51C-51与与ASM-51ASM-51相比,有如下优点:相比,有如下优点:1.1.对单片机的指令系统不要求了解,仅要求对对单片机的指令系统不要求了解,仅要求对8051 8051 的存贮器结构有初步了解;的存贮器结构有初步了解;2.2.寄存器分配、不同存贮器的寻址及数据类型寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;等细节可由编译器管理;3.3.程序有规范的结构,可分成不同的函数,这程序有
3、规范的结构,可分成不同的函数,这种方式可使程序结构化;种方式可使程序结构化;4.4.具有将可变的选择与特殊操作组合在一起的具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;能力,改善了程序的可读性;5.5.提供的库包含许多标准子程序,具有较强的提供的库包含许多标准子程序,具有较强的数据处理能力;数据处理能力;6.6.由于具有方便的模块化编程技术,使已编好由于具有方便的模块化编程技术,使已编好程序可容量地植入新程序;程序可容量地植入新程序;C C5151的数据类型的数据类型 常用的数据类型有:常用的数据类型有:C C5151的程序结构的程序结构 与一般与一般C C语言的结构相同,以
4、语言的结构相同,以main()main()函数为程序人函数为程序人口,程序体中包含若干语句还可以包含若干函数。口,程序体中包含若干语句还可以包含若干函数。位型位型 字符型字符型 整型整型 长整型长整型 浮点型浮点型bit bit charchar intint long intlong int floatfloat1 1位位 1 1字节字节 2 2字节字节 4 4字节字节 4 4字节字节数组型数组型 指针型指针型 C-51C-51数据的存储类型数据的存储类型名名 存储空间位置存储空间位置 长度长度 数据范围数据范围 data data 直接寻址片内直接寻址片内RAM 8RAM 8位位 0 02
5、55 255 bdatabdata 可位寻址片内可位寻址片内RAM 1RAM 1位位 0/10/1idataidata 间接寻址片内间接寻址片内RAM 8RAM 8位位 0 0255255xdataxdata 片外片外RAM 16RAM 16位位 0 06553565535 C-51C-51的包含的头文件的包含的头文件通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h常用有:reg51.h (定义特殊功能寄存器和位寄存器);math.h (定义常用数学运算);C-51C-51的运算符的运算符与与C C语言基本相同:语言基本相同:+-+-*/
6、(加(加 减减 乘乘 除)除)=(位右移(位右移 位左移)位左移)&|&|(按位与按位与 按位或按位或)(按位异或按位异或 按位取反按位取反)C-51C-51的基本语句的基本语句与标准与标准C C语言基本相同:语言基本相同:if if 选择语言选择语言 switch/caseswitch/case 多分支选择语言多分支选择语言 whilewhile 循环语言循环语言 do-while do-while 循环语言循环语言 for for 循环语言循环语言 实例实例ORG 0000HORG 0000HMOV R0,#0DCH;MOV R0,#0DCH;指向字形口指向字形口MOV A,#80HMOV
7、 A,#80H;确定字形代码确定字形代码MOVX MOVX R0,A R0,A ;输出字形代码输出字形代码MOV R1,#0DDH;MOV R1,#0DDH;指向字位口指向字位口MOV A,#20HMOV A,#20H;从最高位开始从最高位开始LEDO:LEDO:MOVX MOVX R1,AR1,A;输出字位代码输出字位代码MOV R2,#18HMOV R2,#18H;确定延时常数确定延时常数ACALL ACALL DEYSDEYS;调延时子程序调延时子程序RL ARL A;右移一位右移一位SJMP SJMP LEDOLEDO;循环演示循环演示;延时子程序延时子程序DEYSDEYS:PUSH
8、02H:PUSH 02HDEY0:PUSH 02HDEY0:PUSH 02HDEY1:PUSH 02HDEY1:PUSH 02H DJNZ R2,$DJNZ R2,$POP 02H POP 02H DJNZ R2,DEY1 DJNZ R2,DEY1 POP 02H POP 02H DJNZ R2,DEY0 DJNZ R2,DEY0 POP 02H POP 02H DJNZ R2,DEYS DJNZ R2,DEYS RET RET END END例例1.“8”1.“8”字符循环演示字符循环演示 (字形口为(字形口为DCH;DCH;字位口为字位口为DDHDDH)汇编语言程序汇编语言程序#inclu
9、de#include#include absacc.h#include#define uchar#define uchar unsigned char unsigned char /*字形口字形口 */#define PORTA XBYTE0 xffdc#define PORTA XBYTE0 xffdc /*字位口字位口 */#define PORTB XBYTE0 xffdd#define PORTB XBYTE0 xffdd /*延时延时 1MS1MS子程序子程序 */void msce(unsigned intvoid msce(unsigned int x)x)unsigned ch
10、ar j;unsigned char j;while(x-)!=0)while(x-)!=0)for(j=0;j60;j+);for(j=0;j60;j+);main()main()uchar rr,i uchar rr,i;for(;)for(;)rr rr=0 x01;/=0 x01;/*从最右一位开始从最右一位开始 */for(i=0;i6;i+)for(i=0;i6;i+)PORTA=0 x80;/PORTA=0 x80;/*输出字形代码输出字形代码*/PORTB=rr PORTB=rr;/;/*输出字位代码输出字位代码*/msce(150);/msce(150);/*调延时子程序调延
11、时子程序*/rr=rr rr=rr1;/1;/*循环左移一位循环左移一位*/“8”“8”字符循环演示字符循环演示的的C C5151程序程序 C C5151程序程序#include#include main()main()int int i;i;unsigned char xdata unsigned char xdata *p=0 x2000;/p=0 x2000;/*指针指向指针指向2000H2000H单元单元 */for(i=0;i256;i+)/for(i=0;i256;i+)/*清零清零2000H-20FFH2000H-20FFH单元单元*/*p=0;p+;p=0;p+;例例2.2.清
12、零程序清零程序 (将将2000H2000H20FFH20FFH的内容清零的内容清零)汇编语言程序汇编语言程序 ORG 0000HORG 0000HSE01:MOV R0,#00H SE01:MOV R0,#00H MOV DPTR,#2000H ;(0000H)MOV DPTR,#2000H ;(0000H)送送DPTRDPTRLOO1:CLR ALOO1:CLR A MOVX MOVX DPTR,A ;0DPTR,A ;0送送(DPTR)(DPTR)INC DPTR ;DPTR+1 INC DPTR ;DPTR+1 INC R0 ;INC R0 ;字节数加字节数加1 1 CJNE R0,#0
13、0H,LOO1 ;CJNE R0,#00H,LOO1 ;不到不到FFFF个字节再清个字节再清LOOP:SJMP LOOPLOOP:SJMP LOOP例例3.3.拆字程序拆字程序(将(将2000H2000H的内容拆开,高位送的内容拆开,高位送2001H2001H低位,低位送低位,低位送2002H2002H低位)低位)汇编语言程序汇编语言程序 ORG 0000HORG 0000HSE02:MOV DPTR,#2000HSE02:MOV DPTR,#2000H MOVX A,MOVX A,DPTRDPTR MOV B,A ;(2000)AB MOV B,A ;(2000)AB SWAP A ;SWA
14、P A ;交换交换 ANL A,#0FH ;ANL A,#0FH ;屏敝高位屏敝高位 INC DPTRINC DPTR MOVX MOVX DPTR,A ;DPTR,A ;送送2001H2001H INC DPTR INC DPTR MOV A,B MOV A,B ANL A,#0FH ;(2000)ANL A,#0FH ;(2000)内容屏敝高位内容屏敝高位 MOVX MOVX DPTR,A ;DPTR,A ;送送2002H2002H SJMP$SJMP$拆字拆字C C5151程序程序#include#include main()main()unsigned char xdataunsign
15、ed char xdata *p=0 x2000;/p=0 x2000;/*指针指向指针指向2000H2000H单元单元*/*2002H 2002H单元高单元高4 4位清零,低位清零,低4 4位装位装2000H2000H单元低单元低4 4位位 */*(p+2)=(p+2)=(*p)&0 x0f;p)&0 x0f;/*2001H 2001H单元高单元高4 4位清零,低位清零,低4 4位装位装2000H2000H单元高单元高4 4位位 */*(p+1)=(p+1)=(*p)4;p)4;汇编语言程序汇编语言程序 ORG 0000HORG 0000HL00:MOV R0,#10H ;L00:MOV R
展开阅读全文