C-51程序设计.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:21 大小:149KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C-51程序设计.ppt

C-51程序设计.ppt

预览

免费试读已结束,剩余 11 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C-51与ASM-51相比,有如下优点:1.对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解;2.寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;3.程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;4.具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;5.提供的库包含许多标准子程序,具有较强的数据处理能力;6.由于具有方便的模块化编程技术,使已编好程序可容易地移植;㈡C-51的程序结构与一般C语言的结构相同,以main()函数为程序人口,程序体中包含若干语句还可以包含若干函数。㈢C-51的数据类型C语言中的基本数据类型㈢(续)C-51的数据类型扩充定义㈣C-51数据的存储类型㈣C-51数据的存储类型(续)例:数据类型存储类型变量chardatavar1;bitbataflags;unsignedcharxdatavextor[10];㈥C-51的运算符与C语言基本相同:+-*/(加减乘除)>>=<<=(大于大于等于小于小于等于)==!=(测试等于测试不等于)&&||!(逻辑与逻辑或逻辑非)>><<(位右移位左移)&|(按位与按位或)^~(按位异或按位取反)㈦C-51的基本语句㈧中断服务程序例:清零程序(将2000H—20FFH的内容清零)★汇编语言程序ORG0000HSE01:MOVR0,#00HMOVDPTR,#2000H;(0000H)送DPTRLOO1:CLRAMOVX@DPTR,A;0送(DPTR)INCDPTR;DPTR+1INCR0;字节数加1CJNER0,#00H,LOO1;不到FF个字节再清LOOP:SJMPLOOP清零程序(将2000H—20FFH的内容清零)★C-51程序#include<reg51.h>main(){inti;unsignedcharxdata*p=0x2000;/*指针指向2000H单元*/for(i=0;i<256;i++){*p=0;p++;}/*清零2000H-20FFH单元*/}★汇编语言程序ORG0000HL00:MOVR0,#10H;查找16个字节MOVR1,#00HMOVDPTR,#2000HL11:MOVXA,@DPTRCJNEA,#00H,L16;取出内容与00H相等吗?INCR1;取出个数加1L16:INCDPTRDJNZR0,L11;未完继续MOVDPTR,#2100HMOVA,R1MOVX@DPTR,A;相同数个数送2100HL1E:SJMPL1E★查找零的个数C-51程序#include<reg51.h>main(){unsignedcharxdata*p=0x2000;/*指针p指向2000H单元*/intn=0,i;for(i=0;i<16;i++){if(*p==0)n++;/*若该单元内容为零,则n+1*/p++;/*指针指向下一单元*/}p=0x2100;/*指针p指向2100H单元*/*p=n;/*把个数放在2100H单元中*/}例:电脑时钟(用定时器产生0.1秒定时中断,在P1口输出)★C-51程序#include<reg51.h>SbitP1_0=P1^0;/*中断服务子程序(0.1秒中断一次)*/voidtime()interrupt1{P1_0=!P1_0;TH0=0x3c;TL0=0xb7;/*给T0赋计数初值*/}例:电脑时钟(续)main(){TMOD=0X01;/*T/C0工作在定时器方式1*/TH0=0x3c;TL0=0xb7;/*给T0赋计数初值*/EA=1;/*CPU开中断*/TR0=1;/*启动T/C0开始定时*/ET0=1;/*T/C0开中断*/whlie(1);}演示SIMLABC程序实例OVER!