单片机考试的实验程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机考试的实验程序

单片机的引脚 AT89C51单片机各引脚图如下2-5所示: 简单I/0口的驱动能力 P0口每个引脚最大灌入电流10mA,总共最大灌入电流26mA;数据和地址的低八位分时复用,普通I/0时无上拉电阻 P1口每个引脚最大灌入电流10mA,总共最大灌入电流15mA;只做普通的I/O口 P2口每个引脚最大灌入电流10mA,总共最大灌入电流15mA;地址的高八位 P3口每个引脚最大灌入电流10mA,总共最大灌入电流15mA;P3.0 P3.1串行通信发送和接受接口 P3.2P3.3外部中断接口 P3.4P3.5计数器接口 P3.6P3.7外部储存器写读允许 P0+P1+P2+P3最大灌入电流为71mA; 内部资源 89C51 RAM :128B 地址范围00H~FFH;在这中间00H~1FH为工作寄存器区32B;20H~2FH是位寻址区16B;30H~7FH为用户RAM区16B;80H~FFH为特殊功能寄存器区64B; ROM:4K 地址范围0000H~ : RAM和ROM最大外扩容量:64K;地址范围0000H~FFFFH; 位寻址区既可以进行位寻址也可以进行字节寻址; 特殊功能寄存器区中的地址的个位能被8整出的都可以位寻址; 中断定时和计数 一个机器周期=8个时钟周期;例如:12M的晶振的机器周期为1uS。 计数或者定时方式 方式0:最大定时时间:8192*机器周期;最大计数范围:0000~8191; 方式1:最大定时时间:65536*机器周期;最大计数范围:0000~65535; 方式2:最大定时时间:256*机器周期;最大计数范围:0000~255;可以自动赋值; 方式3:最大定时时间:256*机器周期;最大计数范围:0000~255;不能用于中断; 方式选择TMOD:门控:1为与外部中断无关;定时计数选择:1为计数、0为定时;定时计数方式:00方式0、01方式1、10方式2、11方式3. EA总中断:1为打开。 ET0或者ET1; TR0或者TR1;开始计数或者定时; 中断的概念:计算机在执行程序的过程中,当出现异常情况或者特殊请求时,计算机停止现行程序的运行自动转向对这些异常情况或者特殊请求的处理,处理结束后,在返回现行程序的间断处继续执行原程序。 中断与子程序的区别:中断时随机发生的,而子程序是事先安排好的。 中断与子程序的相同点:都是暂停当前程序去执行另一个程序。 考试必考程序 //程序 #includekey.h //实现按一个键亮一个灯 sbit LED1=P1^4; //定义接口 sbit LED2=P1^5; sbit LED3=P1^6; void KeyProc(uchar key) { switch(key) { case UP:{LED1=0;LED2=1;LED3=1;}break; //黄灯亮 case DOWN:{LED1=1;LED2=0;LED3=1;}break; //绿灯亮 case ENTER:{LED1=1;LED2=1;LED3=0;}break; //红灯亮 } } void main(void) { uchar key; while(1) { key=KeyScanNUM(); if(key==UP||key==DOWN||key==ENTER) { KeyProc(key); } key=0; } } //程序二 #includekey.h //实现按一次KEY1亮计数一次,计数范围0~9 sbit sm1=P2^4; sbit sm2=P2^5; uchar i=0; void KeyProc(uchar key) { ys(300); if(key==UP) { i++; } } void main(void) { uchar key; uchar code dis[]={0xc0,0xf3,0x98,0x92,0xa3,0x86,0x84,0xd3,0x80,0x82}; /*定义一维数组dis用来存放LED显示断码*/ sm1=0; sm2=1;

文档评论(0)

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

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

1亿VIP精品文档

相关文档