学年设计智能4路模拟量巡检仪C51语言与开发环境哈尔滨理工大学自动化系2010.12目录Ch1.C51语言Ch2.工程文件Ch3.星研开发环境Ch4.KeilC开发环境Ch5.STC51单片机的程序下载Ch6.工程文件实例Ch1C51语言概述C51是用于开发MSC51系列单片机的C语言C51兼容与ANSICC51对ANSIC做了扩充,使之适合与MSC51系列的单片机假定熟悉C语言Ch1C51语言数据类型的扩充bit--定义一个位变量bitflag;sbit--定义特殊功能寄存器中的某个位sbitCLK0=P2^4;sfr和sfr16--定义特殊功能寄存器sfrPSW=0xD0;指针类型由于MCS51系列单片机采用的是隔离编址(独立编址)方式,因此片内寄存器、片内RAM、程序存储器、片外数据存储器的寻址方式是不同的。对于指向不同存储区的指针,需要用不同的方式定义。Ch1C51语言存储器类型片外程序存储器code0000H1000HFFFFH片外/片内EA引脚决定程序存储器00H80HFFH高端片内RAMidata特殊功能寄存器sfr片内RAMdatabdata片外数据存储器xdata0000H100HFFFFH片外数据存储器pdata数据存储器片内RAM和寄存器扩充关键字:data,bdata,idata,sfr,code,xdata,pdataCh1C51语言存储器模式变量和常量必须以一定的存储器类型定位于单片机的存储区域中。存储器类型长度(位)对应单片机存储器bdata1片内RAM,位寻址区,共128位。(亦能字节访问)data8片内RAM低128字节,直接寻址,共128字节。(MOVRi)idata8片内RAM的高128字节,间接寻址,共128字节。(MOV@Ri)pdata8片外RAM的前256字节,分页间址,共256字节。(MOVX@Ri)xdata16片外RAM,间接寻址,共64k字节。(MOVX@DPTR)code16ROM区域,间接寻址,共64k字节。(MOVC@DPTR)Ch1C51语言存储器模式如果用户不对变量的存储器类型进行定义,C51编译器采用默认的存储器类型。由编译控制命令中的存储模式指令限制。charvar;/*在SMALL模式时,var定位data存储区*//*在COMPACT模式时,var定位pdata存储区*//*在LARGE模式时,var定位xdata存储区*/存储模式默认存储类型特点SMALLdata直接访问片内RAM;栈在片内RAM中。COMPACTpdata片外RAM小于256,用R0和R1间址片外分页RAM;栈在片内RAM中。LARGExdata用DPTR间址片外RAM,代码长,效率低。重入栈在xdata中模拟Ch1C51语言数据定义举例intdataibase;/*定义整形变量ibase,位于data区*/charcodeTab[10];/*定义字符数组array[4],位于code区*/chardata*str;/*指向data空间char型数据的指针*/int*datanumber;/*位于data空间的一般指针*/intdata*datanum;/*指针本身在data空间*/charcode*xdatastrptr;/*位于xdata空间的指向code空间的指针*/Ch1C51语言中断服务函数中断函数的定义形式为:void函数名(void)interruptn[usingm]{函数体}n表示中断源的编号,范围是0~31m表示中断服务函数使用的寄存器组Ch1C51语言中断服务函数常用的中断源对应的中断号using用于指定使用的工作寄存器组,m的范围是0~3。不设定工作寄存器组时,编译系统会将当前工作寄存器组的寄存器压入堆栈。在应用程序中任何函数都不能调用中断服务函数,因为它是由系统调用的。中断源外中断0定时器0外中断1定时器1串行口中断号01234Ch1C51语言实例用T0方式1,产生10ms的定时,使P1.0引脚上输出周期为20ms方波,采用中断方式,设系统时钟频率为12MHz。解:1、计算计数初值:N=t/Tcy=10×10-3/1×10-3=10000将–(10000/256)送入TH0中,-(10000%256)送入TL0。2、T0方式控制字:M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;3、程序清单如下:Ch1C51语言实例#include“reg52.h”sbitP10=P1^0;voidtimer0(void)interrupt1{EA=0;P10=!P10;TH0=-(10000/256);TL0=-(10000%256);EA=1;}voidmain(void){TMOD=0x01;P10=0;TH0=-(10000/256);TL0=-(10000%256);EA=1;ET0=1;TR0=1;while(1);}Ch2工程文件工程文件对于大的应用程序,用单一的C源文件编写所有的程序代码是不合适的,其弊端是条理混乱、难于调试、难于管理源代码。应该针对不同的器件或者不同的功能,编写多个C源文件,然后将这些源代码文件分别编译成目标文件OBJ,最后用连接程序将所有OBJ文件和C库连接成一个可执行的文件,对单片机来说就是HEX或者BIN文件。最后用编程器(写入器)将HEX文件烧录到CPU内部的Flash中。Ch2工程文件使用工程文件的基本步骤建立工程文件选择保存工程文件和源代码文件的目录和文件名。配置工程文件的相关选项包括选择CPU类型、配置编译器路径、配置编译器选择、配置仿真器选项。编写各个C源文件,并加入到工程中编译连接烧录测试Ch3星研开发环境注意事项星研开发环境是一个IDE,可以编辑、编译、连接、调试、运行、仿真C51的程序。星研没有自己的编译器,要使用第三方编译工具。通常使用KeilC的编译器,因此要配置编译器的路径,告诉星研开发环境到哪个目录去寻找编译器。Ch4KeilC开发环境注意事项Ch5STC51单片机程序下载STC51系列单片机支持通过串行口下载应用程序需要使用串行口转换器(下载器)需要宏晶公司的专用下载软件使用串口交叉连接线(DB9头标记黑色X的连接线)下载器和主机板通过4PIN线连接,注意插入方向。Ch5STC51单片机程序下载图片必须使用交叉线,即使用USB转串口转接线,也要用交叉线连接加载电源Ch6工程文件实例任务步骤建立工程文件配置工程文件编写功能代码(参考具体硬件电路)编译工程烧录应用程序并运行完成对X25045芯片的看门狗定时器的复位操作。Ch6工程文件实例硬件电路分析112233445566DDCCBBAATitleNumberRevisionSizeBDate:2010-1-4SheetofFile:C:\DocumentsandSettings\..\MORNITER.schDrawnBy:6MX133pC333pC4VCCVCC1EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10AT89S52U54052_A14052_A07135_BUSY123456789101112131415161718192021CON21J2RO1RE2DE3DI4GND5A6B7VCC8MAX481U1ALEVCCBACS1SO2WP3Vss4SI5SCK6RST7Vcc8X25045U9VCCRSTRSTENDIS1DIS2DIS3ENDIS1DIS2DIS310KR28VCCDINSCLKCS240R29TXDRXD0.1uC18VCCX25045与CPU的连接;X25045的时序(P2);