都是main()函数的循环执行惹的祸

来源:本站
导读:目前正在解读《都是main()函数的循环执行惹的祸》的相关信息,《都是main()函数的循环执行惹的祸》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《都是main()函数的循环执行惹的祸》的详细说明。
简介:就在今天好好的一个程序,语发基本上都没有任何错误,和官方的资料都对照了也没有什么问题但是原本好好的程序就是定时器打不开了。为什么呢?今天又大概6个小时的时间都浪费在这个不起眼的自己曾经不知道也没注意的问题上。

首先我跟大家说下我的一下代码需要实现的功能,非常简单就是在定时其溢出也就是进入中断之后单片机通过串口给我的上位机发送一个验证字符H55,但是调试了一个下午就是没法实现。大家先看看以下程序!

void main(void)

{

main_init();

}

//-----------------主函数初始化------------------------------------

void main_init(void)

{

EA=1;//开总中断

uart_init();

timer0_init();

}

//-------------------串行口中断--------------------------

void uart_rec() interrupt 4

{

if(RI)

{

RI=0;

Uart_RD=SBUF;

uart_send(Uart_RD);

}

}

//------------------定时器0初始化函数----------------------------

void timer0_init(void)

{

EA=1;

ET0 =1 ;

TR0 =1 ;

AUXR|=0X80;

TMOD|=0x01;

TH0 =0x00;

TL0 =0x00;

}

//------------------定时器0中断服务函数----------------------------

void timer0() interrupt 1

{

TH0 =0xff;

TL0 =0x00;

uart_send(0x55);

}

相信大家程序也看完了,我敢保证单片机C编程基础比较差的肯定找不这问题的所在!其实整个程序的问题主要是出在主函数没有一个while(1);死循环而程序一直循环执行主函数循环一次的时间小于定时器的定时时间00~65536,故而每次循环都会给定时器的高低八位重新初始化赋值h00、h00,所以导致定时器一直无法溢出去执行定时器中断函数。相信我说道这里单价应该明白怎么回事了吧!

以本人所犯之错,希望大家引以为戒!!!

提醒:《都是main()函数的循环执行惹的祸》最后刷新时间 2024-03-14 01:00:16,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《都是main()函数的循环执行惹的祸》该内容的真实性请自行鉴别。