屠龙刀AI32G12K128定时器问题
本帖最后由 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亮一下,应该灭。结果是一直亮。
把P20放主程序里面,也不行。 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;
} 感觉就是定时器没有打开。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 = 0,每次循环都会亮灯。
定时器1ms中断里面设置P20 = 1,每1毫秒灭一次灯。
这么快速的亮灭,肉眼是看不出来的,要用示波器才能测的出来这么快速的翻转信号。 你的程序非常的乱,完全没有例程代码的痕迹,不如说说你要实现什么功能,大家帮你看看。 void main()
{
SYS_Ini();
P20 = 0; //
Timer0_Init();
EA = 1;
while (1)
{
}
}