第10部分80C51单片机的C语言程序设计02441.ppt

第10部分80C51单片机的C语言程序设计02441.ppt

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

文档评论(0)

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

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

1亿VIP精品文档

相关文档