网站大量收购独家精品文档,联系QQ:2885784924

单片机的C语言程序设计与应用——基于Proteus仿真(第2版).doc

单片机的C语言程序设计与应用——基于Proteus仿真(第2版).doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机的C语言程序设计与应用——基于Proteus仿真(第2版)

c51语言的存储类型与8051存储空间的对应关系 存储区 描述 data 片内RAM的低128字节,可在一个周期内直接寻址 bdata 片内RAM的位寻址区,16字节 idata 片内RAM的256字节,必须采用间接寻址 xdata 外部数据存储区,使用DPTR间接寻址 pdata 外部存储区的256个字节,通过P0口的地址对其寻址。 使用MOVX@Ri,需要2个指令周期。 code 程序存储区,使用DPTR寻址 3-1整型变量的例子 #includereg52.h //特殊寄存器的头文件 #includestdio.h // I/O库函数原型声明 void main(void) {int a,b,c,d; Unsigned int u; 指定a,b,c,d为整型变量 指定u为无符号整型变量 //设定串行口的数据传输速率为1200bit/s, 晶振频率为16MHZ SCON=0x50; //模式1,8bit异步串行口通信 TMOD=0x20; //定时器1为模式2,8bit自动装载方式 TH1=221; //1200bit/s的装载值,16MHZ TR1=1; //timer1运行 TI=1; //设置为1,已发送第一个字符 A=12;b=-24;u=10; C=a+u;d=b+u; Printf (a+u=%d,b+u=#d\n,c,d) While(1){}; } 运行结果a+u=22,b+u=24 3-2头文件引用示例 #includereg51.h //使用的单片机为Intel公司的MCS-51 void main(void) {TL0=0xb0; //访问定时器0,设置时间常数 TH0=ox3c; TR0=1; //启动定时器0 … } 3-3 sbit型变量的定义示例 程序如下: sfr PSW=0xD0; sbit OV=PSW^2; sbit OV=0xd0^2; sbit OV=0xD2; unsigned char bdata flag; sbit flag0=flag^0; sfr p1=0x90; sbit p1_0=p1^0; sbit p1_1=p1^1; sbit p1_2=p1^2; sbit p1_3=p1^3; sbit p1_4=p1^4; sbit p1_5=p1^5; sbit p1_6=p1^6; sbit p1_7=p1^7; 3-4 片内I/O口及其位的定义示例。 程序如下: sfr P1=0x90; //P1口的SFR定义 sfr P3=0xB0; //P3口的SFR定义 sbit DIPswitch=P1^4; //P3口的4位DIP开关输入 sbit greenLED=P1^5; //P1口的5位的绿LED输出 void main(void) { unsigned char data inval; inval=0; //inval的初始化值 while(1) { P1=0XFF; if(DIPswitch==1) //检查P1.4输入是否为高 { inval=p10x0f; //从P1读位0~3 greenLED=0; //置P1.5输出为低 } else //若P1.4输出为低 { greenLED=1; //置P1.5输出为高 } P3=(P30xf0)|(P10X0f); //值输出到P3.0~P3.3 } } 3-5 片内RAM、片外RAM及I/O的定义示例 程序如下: #includeabsacc.h #define PA XBYTE[0xffec] //将PA定义为外部I/O口,地址为0xffec #define NRAM DBYTE[0x40] /*将NRAM定义为片内RAM,地址为40H,长度为8位*/ void main(void) { PA=0x3A; //将数据3AH写入地址0xffec的外部I/O端口 NRAM=0x01; //将数据01H写入片内RAM40H单元 } 3-6 通过_at_实现绝对地址的访问示例。 程序

您可能关注的文档

文档评论(0)

seunk + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档