发 帖  
原厂入驻New
[文章]

定时器问题

2014-6-12 17:50:04  969
分享
0
刚学单片机,有个程序没想明白哈,大神不吝赐教啊哈~

定时器中断子程序(见本文最后):
void timer0_isr(void) interrupt 1 using 1
中:
=======
static unsigned char i;
//重新赋值 12M晶振计算,指令周期1uS,500x2=1mS方波
TH0=(65536-500)/256;   
TL0=(65536-500)%256;        
i++;
P1=i; //P1口8路输出不同频率,相当于一个分频器,高频用示波
       //器测量,低频可以直接用LED观测
       //P1.0输出1ms方波,P1.1输出2ms,p1.2输出4ms,以此类推

=======
这里P1=i是怎么实现:
P1.0输出1ms方波,P1.1输出2ms,p1.2输出4ms,以此类推?????


源程序如下:


/*-----------------------------------------------
  名称:定时器0
  内容:通过定时产生不同频率方波
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
/*------------------------------------------------
                    定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01;   //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响      
//TH0=0x00;       //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
//TL0=0x00;
EA=1;            //总中断打开
ET0=1;           //定时器中断打开
TR0=1;           //定时器开关打开
}
/*------------------------------------------------
                    主程序
------------------------------------------------*/
main()
{
Init_Timer0();
while(1);
}
/*------------------------------------------------
                 定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
static unsigned char i;
//重新赋值 12M晶振计算,指令周期1uS,500x2=1mS方波
TH0=(65536-500)/256;   
TL0=(65536-500)%256;        
i++;
P1=i; //P1口8路输出不同频率,相当于一个分频器,高频用示波
       //器测量,低频可以直接用led观测
       //P1.0输出1ms方波,P1.1输出2ms,p1.2输出4ms,以此类推
}

//就是这里看不懂,这是为什么呢?




罗震 2014-6-12 18:45:54
1ms : P1.0=1
2ms : P1.1=1,P1.0=0
3ms : P1.1=1,P1.0=1
4ms : P1.2=1,P1.1~P1.0=0
...
8ms : P1.7=1,P1.6~P1.0=0
...
回复

举报

liang 2014-6-12 22:15:48
这个好像可以用时间片的思想
回复

举报

张荣 2014-6-13 09:22:35
罗震 发表于 2014-6-12 18:45
1ms : P1.0=1
2ms : P1.1=1,P1.0=0
3ms : P1.1=1,P1.0=1


谢谢您的回答,您的答案对我非常有帮助!
回复

举报

张荣 2014-6-13 09:23:35
lqwuliang 发表于 2014-6-12 22:15
这个好像可以用时间片的思想


谢谢您的回答,您的答案对我非常有帮助!
用时序图可以看的很明白哈~
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发文章
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表