找回密码
 立即注册
查看: 749|回复: 26

屠龙刀AI32G12K128定时器问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 16:50:44 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-9-25 18:42 编辑

哪个大佬帮忙看一下    屠龙刀22年6月20的板。。我没有办法打开定时器。全部程序


#include "stc32g.h"
#include "config.h"


sbit P20 = P2^0;
void Timer0_Init(void);


void SYS_Ini()   // STC32初始化设置
  {
        EAXFR = 1;                                                                         // 使能访问 XFR
        CKCON = 0x00;                                                         // 设置外部数据总线速度为最快
        WTST = 0x00;                                                                 // 设置程序代码等待参数,赋值为 0 可将 CPU 执行程序的速度设置为最快
        
        P0M1 = 0x00;P0M0 = 0x00;                // 设置P0口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P1M1 = 0x00;P1M0 = 0x00;                // 设置P1口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P2M1 = 0x00;P2M0 = 0x00;                // 设置P2口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P3M1 = 0x00;P3M0 = 0x00;                // 设置P3口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P4M1 = 0x00;P4M0 = 0x00;                // 设置P4口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P5M1 = 0x00;P5M0 = 0x00;                // 设置P5口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P6M1 = 0x00;P6M0 = 0x00;                // 设置P6口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P7M1 = 0x00;P7M0 = 0x00;                // 设置P7口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
  
}

void main()
        {
        SYS_Ini();
                 while (1)
                 { P20 = 0;                     //
                     Timer0_Init();
                      EA = 1;
                              }        
                }

void Timer0_Isr(void) interrupt 1
{
  P20 = 1;
}
void Timer0_Init(void)                //1毫秒@24.000MHz
{
        AUXR |= 0x80;                        //定时器时钟1T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TL0 = 0x40;                                //设置定时初始值
        TH0 = 0xA2;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
        ET0 = 1;                                //使能定时器0中断
  EA = 1;
}

理论上P20亮一下,应该灭。结果是一直亮。


回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 16:52:19 | 显示全部楼层
把P20放主程序里面,也不行。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 16:53:21 | 显示全部楼层
void main()
        {
        SYS_Ini();
                 while (1)
                 { P20 = 0;                     //
                     Timer0_Init();
                      EA = 1;
         if(t_a == 1) { t_a =0;  s_a++; }
                     if(s_a == 5000)  P20 =1;
                        }       
                }
void Timer0_Isr(void) interrupt 1
{
  t_a = 1;  
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 16:54:02 | 显示全部楼层
感觉就是定时器没有打开。void Timer0_Init(void)                //1毫秒@24.000MHz
{
        AUXR |= 0x80;                        //定时器时钟1T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TL0 = 0x40;                                //设置定时初始值
        TH0 = 0xA2;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
        ET0 = 1;                                //使能定时器0中断
  EA = 1;
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 16:54:45 | 显示全部楼层
已经搞了一个星期了。哪位大佬。帮忙看一下。什么问题。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 16:55:27 | 显示全部楼层
程序是参考例程和下载器来的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

521

积分

高级会员

积分
521
发表于 2024-9-25 16:57:31 | 显示全部楼层
已经搞的很无语了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2024-9-25 17:14:57 | 显示全部楼层
主循环里设置P20 = 0,每次循环都会亮灯。
定时器1ms中断里面设置P20 = 1,每1毫秒灭一次灯。
这么快速的亮灭,肉眼是看不出来的,要用示波器才能测的出来这么快速的翻转信号。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-9-25 17:16:14 | 显示全部楼层
你的程序非常的乱,完全没有例程代码的痕迹,不如说说你要实现什么功能,大家帮你看看。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-9-25 17:33:08 | 显示全部楼层
  1. void main()
  2. {
  3.         SYS_Ini();
  4.         P20 = 0;                     //
  5.         Timer0_Init();
  6.         EA = 1;
  7.         while (1)
  8.         {
  9.         }
  10. }
复制代码
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:28 , Processed in 0.144883 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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