什么问题
哪位大佬帮忙看一下,程序还有什么问题。定时器好像不工作。void Timer0_Isr(void) interrupt 1
{
t_a = 1;
}
void Timer0_Init(void) //1毫秒@24.000MHz
{
TM0PS = 0x00;
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x40; //TL0 = j;//; //设置定时初始值
TH0 = 0xA2; //TH0 = i;// //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
EA=1;
}
void delayt0_ms(u16 nms) // 是不是这个程序写的有问题?????????????????
{
t_a == 1;
for(s_a=0 ;s_a < n ;s_a ++ )
{t_a = 0 ; }
}
void main()
{
SYS_Ini();
Timer0_Init();
while (1)
{
P20 = 0;
delayt0_ms(500);
P20 = 1;
}
}
// 程序 长期P20 = 0。。 P20 = 1 没有。
本帖最后由 邮箱 于 2024-9-27 09:55 编辑
是 delayt0_ms 函数有问题。你编译器没有警告? 你应该问哪里没问题,先把C语言的基础再看一下,不要太着急开发 邮箱 发表于 2024-9-27 09:52
是 delayt0_ms 函数有问题。你编译器没有警告?
有警告,没有错误,过了。问一下。问题出在那里? t_a == 1;不明白这句是什么意思?只要发生中断t_a=1,没错,但是又是独立出来不是判断又不是赋值。 DHBT2023 发表于 2024-9-27 10:11
有警告,没有错误,过了。问一下。问题出在那里?
void delayt0_ms(u16 nms)
{
u8 s_a;
t_a = 0;
for(s_a=0 ;s_a < nms ;s_a ++ )
{
while(!t_a);
t_a = 0 ;
}
} 1. delayt0_ms函数有问题,楼上帮你改好了
2. 你觉得while(1)中的P20=1;到P20=0;要多久时间?请加延时 void delayt0_ms(u16 nms) // 是不是这个程序写的有问题?????????????????
{
t_a == 1;
for(s_a=0 ;s_a < n ;s_a ++ )
{t_a = 0 ; }
}
没有定义变量s_a,形参是nms,程序里面是n 你应该问问你这代码哪没问题……
首先代码就跟狗啃了一样参差不齐,让谁看谁头疼。
先把缩进弄好,用论坛的插入代码功能重新搞下吧。 变量t_a==1;????还是t_a=1,全局定义了t_a,s_a ,n变量了吗? 形参试nms,s_a<nms ,......
页:
[1]
2