第10章80C51单片机的C语言程序设计.pptVIP

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 【例10-1】单片机应用系统中,外中断0引脚接一个开关,并行口线P1.0接一个发光二级管。要求:开关闭合一次,发光二极管的状态改变一次。试编写程序 #include “reg51.h” #include “intrins.h” sbit P10 = P1^0; void delay(void) {int a = 5000; while(a - - )_nop_( ); } void int_srv(void)interrupt 0 {delay( ); if(INT0 = = 0){P10 = ! P10;while(INT0 = = 0);} } void main() { P10 = 0; EA = 1; EX0 = 1; while(1); } * * 定时计数器编程示例 【例10-2】 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12 MHz。 1、计算计数初值X: N=t/ Tcy =10×10-3/1×10-6=10000 计数器初值应为-10000。即应将 -(10000/256)送入TH0中,-(10000%256)送入TL0中。 2、求T0的方式控制字TMOD: M1M0 = 01,GATE = 0,C/T = 0,可取方式控制字为01H。 3、程序清单(见下页) * * #include “reg51.h” sbit P10 = P1^0; void timer0(void)interrupt 1 { P10 = ! P10; TH0 = -(10000/256); TL0 = -(10000%256); } void main(void) { TMOD = 0x01; P10 = 0; TH0 = -(10000 / 256); TL0 = -(10000 % 256); EA = 1; ET0 = 1; TR0 = 1; while(1); } * * 10.6.2 80C51扩展资源的编程 通用并行口编程示例 【例10-3】用81C55作为微型打印机与单片机间的接口电路。 * * #include “reg51.h” #include “absacc.h” /*含有对XBYTE等绝对地址访问宏的定义*/ #define uchar unsigned char #define COMD8155 XBYTE[0x7f00] #define PA8155 XBYTE[0x7f01] #define PB8155 XBYTE[0x7f02] #define PC8155 XBYTE[0x7f03] sbit BUSY = P3^3; * * uchar code tab[17] = {0xb8,0xdf,0xbd,0xcc,0x20, 0xb3,0xf6,0xb0,0xe6,0xc9,0xe7,0x20, 0x32,0x30,0x30,0x38,0x0a};/*高教 出版社 2008*/ uchar t1 = 17; void ptr(uchar d) /*打印字符函数*/ { PA8155 = d; PC8155 = 0x00; /*产生选通脉冲*/ PC8155 = 0x01; while(BUSY); } * * void main(void) { COMD8155 = 0x0f;/*送命令字*/ prt(0x1c); /*送中文打印方式命令字高字节*/ prt(0x26); /*送中文打印方式命令字低字节*/ EA = 1; EX1 = 1; while(1); } * * void int1(void)interrupt 2 using 1 { uchar i; EA = 0; for(i = 0;i t1;i ++)prt(tab[i]); EA = 1; } * * A/D转换接口编程示例 【例10-4】 ADC0809与单片机的接口电路如图。 * * # include “reg51.h” # include “absacc.h” # define uchar unsigned char # define IN0 XBYTE[0x7ff8] sbit ad_busy = P3^3; * * void ad0809(uchar idata *x) { uchar i; uchar xdata * ad_adr; ad_adr = IN0; for(i = 0;i 8;i ++) { * ad_adr

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档