51单片机10毫秒定时,6M单片机
答案:1 悬赏:0
解决时间 2021-02-22 05:51
- 提问者网友:低唤何为爱
- 2021-02-21 09:17
51单片机10毫秒定时,6M单片机
最佳答案
- 二级知识专家网友:而你却相形见绌
- 2021-02-21 10:10
初始化程序:
MOV IE,#88H ;10001000即允许总中断、定时器1中断
MOV TMOD,#10H ;00010000即定时器1设置为16位定时模式
MOV TH1,#0F0H ;定时器1设置为10ms中断一次
MOV TL1,#60H ;定时器1设置为10ms中断一次
SETB TR1 ;启动定时器1
SJMP $ ;死循环
中断服务程序:
ORG 001BH ;001BH是定时器1中断服务程序的入口地址
MOV TH1,#0F0H ;重装初值;定时器1设置为10ms中断一次
MOV TL1,#60H ;重装初值;定时器1设置为10ms中断一次
(这里加入你的服务语句)
RETI ;中断服务返回
以下是C程序:
void Timer_0_1_Init(); //初始化函数声明
int main()
{
Timer_0_1_Init(); //定时器0初始化
while(1)
{
(接下来是你的主程序语句)
}
return 0;
}
void Timer_0() interrupt 1 //每隔10000us(10ms)进入一次中断服务程序
{
TH0 = (65536 - 10000)/256; //对定时器重新赋初值,以便进入下一次中断
TL0 = (65536 - 10000)%256;
++count;
}
void Timer_0_1_Init()
{
EA = 1; //开启总中断
ET0 = 1; //开启定时器T0中断
TMOD = 0x01; //定义定时器的工作模式为定时模式,选择工作方式1
TR0 = 1; //启动定时器T0
TH0 = (65536 - 10000)/256; //给定时器0的高8位写入初始值
TL0 = (65536 - 10000)%256; //给定时器0的低8位写入初始值
}
MOV IE,#88H ;10001000即允许总中断、定时器1中断
MOV TMOD,#10H ;00010000即定时器1设置为16位定时模式
MOV TH1,#0F0H ;定时器1设置为10ms中断一次
MOV TL1,#60H ;定时器1设置为10ms中断一次
SETB TR1 ;启动定时器1
SJMP $ ;死循环
中断服务程序:
ORG 001BH ;001BH是定时器1中断服务程序的入口地址
MOV TH1,#0F0H ;重装初值;定时器1设置为10ms中断一次
MOV TL1,#60H ;重装初值;定时器1设置为10ms中断一次
(这里加入你的服务语句)
RETI ;中断服务返回
以下是C程序:
void Timer_0_1_Init(); //初始化函数声明
int main()
{
Timer_0_1_Init(); //定时器0初始化
while(1)
{
(接下来是你的主程序语句)
}
return 0;
}
void Timer_0() interrupt 1 //每隔10000us(10ms)进入一次中断服务程序
{
TH0 = (65536 - 10000)/256; //对定时器重新赋初值,以便进入下一次中断
TL0 = (65536 - 10000)%256;
++count;
}
void Timer_0_1_Init()
{
EA = 1; //开启总中断
ET0 = 1; //开启定时器T0中断
TMOD = 0x01; //定义定时器的工作模式为定时模式,选择工作方式1
TR0 = 1; //启动定时器T0
TH0 = (65536 - 10000)/256; //给定时器0的高8位写入初始值
TL0 = (65536 - 10000)%256; //给定时器0的低8位写入初始值
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯