软件延时和定时器实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TMOD = 0x00;//设置定时器模式0,STC15F2K60S2的方式0即为16位重装载模式
TL0 = (65535-50000)%256;//设置定时初值50ms
TH0 = (65535-50000)/256;//设置定时初值50ms
TF0 = 0;//清除TF0标志
TR0 = 1;//定时器0开始计时
#include"intrins.h"
unsigned int temp=0;
void Timer0Init(void)//100微秒@11.0592MHz
{
//AUXR |= 0x80;//定时器时钟1T模式(1T和12T模式选择)
AUXR &= 0x7F;//定时器时钟12T模式(1T和12T模式选择)
2、使用查询法检查是否出现计时溢出,溢出时执行指定代码。
本实验使TIMER0工作于方式2,即自动重装方式,TIMER0的定时中断程序控制4只LED一边闪烁,一边滚动显示。所用的是定时中断技术,该技术需要完成以下几项工作:
1、设置定时器工作模式(设置TMOD)
2、设置定时器初值(设置TH0/TL0或TH1/TH1)
//TH0 = (65535-50000)%256;//再次设置定时初值
if(temp>20)
{
temp = 0;
P0=~P0;
}
temp++;
}
五、实验结论(结果):
本实验实现了XXX功能,核心算法采用了XXX的方式,达到了预期目的。
六、实验心得与小结:
(自行填写,如:功能是否实现;整个过程中存在哪些问题;如何解决的….)
for(i=0;i<120;i++);
}
main()
{
P0 = 0xfe;//0xfe = 1111 1110
while(1)
{
P0=_crol_(P0,1);
DelayMS(1000);
}
}
//============2、闪烁灯============
#include<STC15F2K60S2.h> //此文件中定义了STC15系列的一些特殊功能寄存器
二、软件延时和定时器实验
一、实验目的及要求
1、学习TIMER0的工作方式
2、学习利用硬件“定时器”完成延时的编写方法
该实验前已有案例设计了单只或多只LED的闪烁,这些案例都是使用延时子程序使LED按一定延时开关,形成闪烁效果,本例对LED的闪烁延时使用了新的定时器技术。
使用定时器时主要有两种方法:
1、使用定时中断技术,计时溢出时触发中断,预先设计的中断子程序将被自动调用。
ET0 = 1;//使能定时器0 IE.1
EA = 1;//使能全局中断IE.7
}
void main(void)
{
P0=0x00;
Timer0Init();
while(1);
}
void tm0_isr() interrupt 1 using 1
{
//TL0 = (65535-50000)/256;//再次设置定时初值
#include<STC15F2K60S2.h> //此文件中定义了STC15系列的一些特殊功能寄存器
#include"intrins.h"
void DelayMS(unsigned int x)//@11.0592MHz
{
unsigned char i,j;
while(x--)
for(j=0;j<12;j++)
3、允许定时器中断(设置IE,或单独设置EA,ET0/ET1)
4、启动定时器(设置TCON或单独设置TR0/TR1)
二、实验原理(图)
三、实验设备(环境):
1、电脑一台
2、ProteusISIS 7 Professional应用程序
3、Keil应用程序
四、实验内容(算法、程序、步骤和方法):
//============1、流水灯=========wenku.baidu.com==
相关文档
最新文档