[通用8051核FLASH系列] 【HC89S003P套件试用】6、定时器0中断测试

[复制链接]
1119|4
 楼主| tlled 发表于 2019-3-21 08:42 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-24 14:59 编辑

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

    一、手册相关的资料
    1.png
    2.png

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


    二、程序代码


  1. //main.c
  2. #define ALLOCATE_EXTERN

  3. #include "config.h"

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

  14. void main(void)
  15. {
  16. //        uint i;
  17.         SystemInit();                //系统初始化
  18.         Init_Port();                //端口初始化
  19.         //EintInit();                        //外部中断初始化
  20.         //INT2_7_Init();        //外部中断2-7初始化
  21.         //CCO_Init();                //CCO输出
  22.         
  23.         Init_Timer0();        //初始化定时器0
  24.         
  25.         while(1)
  26.         {
  27.         }
  28. }

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

  31. //定时器0初始化
  32. void Init_Timer0(void)
  33. {
  34.         TCON1 |= 0x01;                                        //定时器0时钟1分频
  35.         TMOD |= 0x01;                                                //设置T0为16位定时模式
  36.         TH0 = 0xc1;                                                        
  37.         TL0 = 0x80;                                                        //1MS
  38.         ET0=1;                                                               
  39.         TR0=1;  
  40.         EA = 1;                                                                //打开总中断        
  41. }

  42. //定时器0中断处理
  43. void timer0(void) interrupt TIMER0_VECTOR
  44. {
  45.         TH0 = 0xc1;                                                        
  46.         TL0 = 0x80;                                                        //1MS
  47.         P0_0 =~ P0_0;                                                //P00翻转
  48. }

      程序源码: HC89S003F4_TEST_TIMER.rar (45.39 KB, 下载次数: 11)

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

    P00口输出1MS方波
    03211.jpg



零三翟邢止胃 发表于 2019-3-21 09:33 | 显示全部楼层
嗯,很好的啊! 不错的啊!
 楼主| tlled 发表于 2019-3-21 11:49 | 显示全部楼层
零三翟邢止胃 发表于 2019-3-21 09:33
嗯,很好的啊! 不错的啊!

继续努力
yzq13246068880 发表于 2019-3-22 16:56 | 显示全部楼层
波形优点失真
 楼主| tlled 发表于 2019-3-22 17:11 | 显示全部楼层

示波器表笔有点问题,不影响测试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

132

主题

701

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部