打印
[通用8051核FLASH系列]

【HC89S003P套件试用】6、定时器0中断测试

[复制链接]
841|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tlled|  楼主 | 2019-3-21 08:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-24 14:59 编辑

    测试下定时器0中断,使用定时器0产生1ms定时中断,反转P00口电平。

    一、手册相关的资料
   
   

    定时器0的工作方式1和通用的单片机一样 ,16位定时器计数器进入中断口要重新装载TH0和TL0的值。


    二、程序代码


//main.c
#define ALLOCATE_EXTERN

#include "config.h"

//系统初始化
void SystemInit(void)
{
        /************************************系统初始化****************************************/
        WDTCCR = 0x00;                                                //关闭看门狗
        while((CLKCON&0x20)!=0x20);                        //等待内部高频RC起振
        CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
        while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
        CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz
}

void main(void)
{
//        uint i;
        SystemInit();                //系统初始化
        Init_Port();                //端口初始化
        //EintInit();                        //外部中断初始化
        //INT2_7_Init();        //外部中断2-7初始化
        //CCO_Init();                //CCO输出
        
        Init_Timer0();        //初始化定时器0
        
        while(1)
        {
        }
}

//timer.c
#include "config.h"

//定时器0初始化
void Init_Timer0(void)
{
        TCON1 |= 0x01;                                        //定时器0时钟1分频
        TMOD |= 0x01;                                                //设置T0为16位定时模式
        TH0 = 0xc1;                                                        
        TL0 = 0x80;                                                        //1MS
        ET0=1;                                                               
        TR0=1;  
        EA = 1;                                                                //打开总中断        
}

//定时器0中断处理
void timer0(void) interrupt TIMER0_VECTOR
{
        TH0 = 0xc1;                                                        
        TL0 = 0x80;                                                        //1MS
        P0_0 =~ P0_0;                                                //P00翻转
}

      程序源码: HC89S003F4_TEST_TIMER.rar (45.39 KB)

     定时器0工作方式0是在方式1的基础上,将定时器中断里面的
    TH0 = 0xc1;
    TL0 = 0x80;        //1MS    自动可以赋值,执行结果是一样的。
    三、执行结果

    P00口输出1MS方波
   



沙发
零三翟邢止胃| | 2019-3-21 09:33 | 只看该作者
嗯,很好的啊! 不错的啊!

使用特权

评论回复
板凳
tlled|  楼主 | 2019-3-21 11:49 | 只看该作者
零三翟邢止胃 发表于 2019-3-21 09:33
嗯,很好的啊! 不错的啊!

继续努力

使用特权

评论回复
地板
yzq13246068880| | 2019-3-22 16:56 | 只看该作者
波形优点失真

使用特权

评论回复
5
tlled|  楼主 | 2019-3-22 17:11 | 只看该作者

示波器表笔有点问题,不影响测试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

125

主题

691

帖子

6

粉丝