《2021实验1 keil,proteus介绍及软件延时》由会员分享,可在线阅读,更多相关《2021实验1 keil,proteus介绍及软件延时(4页珍藏版)》请在金锄头文库上搜索。
1、实验1 keil,proteus介绍及软件延时第 2 讲定时器中断实验(Interrupt Timer)实验目的掌握定时器相关寄存器的配置,以及定时时间的计算等实验内容定时器中断控制P1.0口输出(实现LED的亮灭),在Proteus界面观察。实验步骤1、在Keil开发环境下建立一个工程,命名为定时器中断,然后选择存储路径进行文件保存。2、程序的编写,a.定时常数的确定定时器/计数器的输入脉冲周期与机器周期一致,为振荡频率的1/12。本实验中时钟频率为12 MHZ,现采用中断方法来实现0.5秒延时,选用定时器T0来完成。(用T0计时器不能直接实现0.5S的延时,实验可以通过中断延时0.05秒,
2、然后进行10次中断后,实现LED的亮灭)时间常数可按下述方法确定:机器周期=12晶振频率=12/(12106)=1us设计数初值为X,则(216-X)110-6=0.05,可求得X,然后将X化为十六进制则X=3CB0H,故初始值为TH1=3CH,TL1=B0Hb.初始化程序包括定时器初始化和中断系统初始化,主要是对IE、TCON、TMOD 的相应位进行正确的设置,并将时间常数送入定时器中。c.设计中断服务程序和主程序中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。d.编译代码:1#include 2#define unchar unsigned cha
3、r3#define unint unsigned int4unchar i=10; /计数值赋初值,10次,然后每次0.05s,实现0.5s计时;5sbit LED = P10;6void main()78TMOD = 0x01; /定时器0工作方式19TH0 = 0x3c; /装入定时器初值定时50ms10TL0 = 0xb0;11ET0 = 1; /定时器0中断允许12EA = 1; /总中断允许13TR0 = 1; /定时器0开始计时14while(1); /等待151617void time0() interrupt 1 /定时器0中断服务函数1819TH0 = 0x3c; /重装计数
4、器值20TL0 = 0xb0;21i-; /自减10次计数,22if(i=0) /10次计数到2324LED=LED; /P1.0取反,实现LED亮灭25i=10; /重新赋计数初值26273、搭建Proteus仿真平台,仿真平台如实验1中平台一致。4、程序下载调试,编译完成后生成HEX文件进行下载调试。5、附注:定时器还常用方式0和方式2,方式2 为自动重装计数初值的8位定时器,主要用于串行通信中波特率的产生和短时精确定时(因为不必软件重装初值所以更精确)。6、实验还可以借助Proteus软件中的可视化工具进行观察,本实验可以将LED灯换成示波器来观察P1.0口的波形输出情况。a.删除原理图中的LED以及与之相连的电阻、电源器件;并在图中加入开关(关键词“BUTTON”)等器件,将上电自动复位转变为手动复位。b在绘图工具栏点击按钮,然后选择示波器按如图2-1方式连接。图2-1 示波器连接图c、然后如前所叙述的步骤下载程序后运行,系统自动弹出示波器界面,通过调节示波器上按钮可以调节脉冲在界面的显示效果。也可以定量检验定时值。图2-2 示波器应用