永发信息网

如何用pic单片机写用中断法,让16位定时器TMR1 ,让LED一秒闪

答案:1  悬赏:0  手机版
解决时间 2021-04-03 16:18
如何用pic单片机写用中断法,让16位定时器TMR1 ,让LED一秒闪
最佳答案
#include//16位定时器TMR1的应用,用中断法,让LED一秒闪
//在使用定时计数器时一定要设置使能寄存器(PIE1)和中断控制寄存器(INTCON)
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
uint initnum;//定义一个溢出中断的变量
void init()//初始化接LED的RD端口为输出,及设置OPTION寄存器关闭TMR0定时计时器
{
TRISD=0;//输出状态
INTCON=0xc0;//设置中断控制寄存器为11000000,始终只用到两个位开总中断,开第一外设允许中断
PIE1=0x01;//使能定时器1为00000001开中断,始终只用一最后一个其他的不用理会
TMR1L=(65536-50000)%256;//装初傎,因为定时器1是16位的,要装满65536个数后才满加1(也就是65536us),如果设50ms(50000us)就加1,则要先装一个初值65536-50000
TMR1H=(65536-50000)/256;//又因为要将初值分开装在低八位和高位里,而八位只有256个数,所以对256求模得整数看有多少个256装在高八位,余下的属于低八位的就求余
T1CON=0x01;//00000001在初始化中只用到最后一位就是开始启到动定时器1(设置预分频器和后分频器)
}
void main()//在主函数里中断函数不需要调用和判断是否产生中断溢出标志T0IF,因为从一上电就自动运行,一到50ms中断会自动溢出加1
{
init();
while(1)
{
if(initnum==20)//它每50ms产生溢出中断,20次则是一秒
{
initnum=0;//到了1s后清零
RD0=!RD0;//取反,再到第二次溢出又取反电平
}
}
}
void interrupt time0()//定时器的程序,后面不用写和51单片机那样的序号,也不用就算写在主函数的后面也不用声明
{ //例如:如果是TMR1IF置位才能知用是TMR0定时器,如果是T1IF置位才能知道是TMR1定时器
TMR1IF=0;//先清零,同时知道是用TMR1定时器
TMR1L=(65536-50000)%256;//也要重新装一次初值,从这个初值的基础上加
TMR1H=(65536-50000)/256;
initnum++;//加一
}来自:求助得到的回答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题我国历代王朝都重视发展交通。下列各项
杭州独孤九翅哪里有卖??
家长对三年级学生评语,三年级小学生素质发展
如何在多个不同日期的电子表格前加同一个内容
在湿法炼锌的热酸浸出过程中,从含铁高的浸出
黑狗代表什么,不吉利吗?我们小区里来了只黑
单选题下列生物中不属于微生物类群的是A.酵母
温雨婷的日语怎么说,五月雨是什么意思
为什么双子座女生在QQ上不主动聊天
短一点的名人名言七个,短一点的名人名言。
迷信与民族文化的区别
某组同学在饲养家蚕的过程中,发现家蚕很喜欢
和女朋友分手一周后,我发信息给她,她说不要
4月份有关许嵩的书
电路短接是什么意思,短接是什么意思
推荐资讯
成都老罗装修公司怎么样?
考厦门大学经济研究所产业经济学硕士都考什么
我想知道,斗记的普洱茶为什么贵,到底贵在那
嫡谋 萧靖西的女儿叫啥
同居14年共同的钱买的房子房产证他名子我能分
阿斗当官下一句,关于抓住机会,勇于挑战的名
喝了自酿葡萄酒胳膊疼痛怎么回事呢
奋起的叶子的作品《我曾爱过你,想到就心疼》
唉的拼音是什么,收件地址怎么填写,用中文拼
文献中常常提到2%乙酸溶液,请问指的是什么单
以前用的微信头像怎样才能找出来
问题1:为什么在句子中的单词grandpa,可是它
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?