单片机内部资源及编程 .pptxVIP

  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文档。上传文档
查看更多
单片机内部资源及编程;C51语言程序: #include reg51、h void main(void) { unsigned char i; P0=0xff; for(;;) { i=P0;P1=i; } };6、2 定时/计数器接口;6、2、1 定时/计数器T0、T1的结构及工作原理 ;加法计数器在使用时注意两个方面。 第一,由于它是加法计数器,每来一个计数脉冲,加法器中的内容加1个单位,当由全1加到全0时计满溢出,因而,假如要计N个单位,则首先应向计数器置初值为X,且有: 初值X=最大计数值(满值)M-计数值N 在不同的计数方式下,最大计数值(满值)不一样,一般来说,当定时器/计数器工作于R位???数方式时,它的最大计数值(满值)为2的R次幂。 第二,当定时/计数器工作于计数方式时,对芯片引脚T0(P3、4)或T1(P3、5)上的输入脉冲计数,计数过程如下:在每一个机器周期的S5P2时刻对T0(P3、4)或T1(P3、5)上信号采样一次,假如上一个机器周期采样到高电平,下一个机器周期采样到低电平,则计数器在下一个机器周期的S3P2时刻加1计数一次。因而需要两个机器周期才能识别一个计数脉冲,因此外部计数脉冲的频率应小于振荡频率的1/24。;6、2、2 定时/计数器的方式和控制寄存器;C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0时工作于定时方式。 ;TF0:定时/计数器T0的溢出标志位,当定时/计数器T0计满时,由硬件使它置位,如中断允许则触发T0中断。进入中断处理后由内部硬件电路自动清除。 TR0:定时/计数器T0的启动位,可由软件置位或清零,当TR0=1时启动;TR0=0时停止。;方式1是13位的定时/计数方式,因而最大计数值(满值)为2的13次幂,等于8192。如计数值为N,则置入的初值X为: X=8192-N 如定时/计数器T0的计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则TH0,TL0。;三、方式2; 由因此8位的定时/计数方式,因而最大计数值(满值)为2的8次幂,等于256。如计数值为N,则置入的初值X为: X=256-N 如定时/计数器T0的计数值为100,则初值为256-100=156,转换成二进制数,则TH0= TL0。 注意: 由于方式2计满后,溢出信号会触发三态门自动地把TH0(或TH1)的值装入TL0(或TL1)中,因而假如要重新实现N个单位的计数,不用重新置入初值。 ;;6、2、4 定时/计数器的初始化编程及应用 ;二、定时/计数器的应用;汇编程序: ORG 0000H LJMP MAIN ORG 000BH ;中断处理程序 CPL P1、0 RETI ORG 0100H ;主程序 MAIN:MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H SETB EA SETB ET0 SETB TR0 SJMP $ END;(2)采纳查询方式处理的程序;假如定时时间大于65536μs,这时用一个定时/计数器直截了当处理不能实现,这时可用两个定时/计数器共同处理或一个定时/计数器配合软件计数方式处理。 ;(1)用寄存器R2作计数器软件计数,中断处理方式。 汇编程序: ORG 0000H LJMP MAIN ORG 000BH LJMP INTT0 ORG 0100H MAIN:MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#0F0H MOV R2,#00H SETB EA SETB ET0 SETB TR0 SJMP $ INTT0:MOV TH0,#0D8H;C语言程序: #include reg51、h //包含特别功能寄存器库 sbit P1_1=P1^1; char i; void main() { TMOD=0x01; TH0=0xD8;TL0=0xf0; EA=1;ET0=1; i=0; TR0=1; while(1); } void time0_int(void) interrupt 1 //中断服务程序 { TH0=0xD8;TL0=0xf0; i++; if (i= =50) {P1_1=! P1_1;i=0;} };(2) 用定时/计数器T1计数实现,定时/计数器T1工作于计数方式时,计数脉冲通过T1(P3、5)输入,设定时/计数器T0定时时间到对T1(P3、5)取反一次,则T

文档评论(0)

180****0501 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档