在用c语言写单片机程序时 应该把什么写在中断什么写在主函数什么写在while里

作者&投稿:邲蓉 (若有异议请与网页底部的电邮联系)
在C语言编程中,主函数在执行子函数里的while(1)时,突然定时中断来了,主函数会去执行中断里面的函数吗~

可以的,定时中断的优先级较高,中断后会执行中断里面的程序,当中断里面的程序执行完成之后,你可以初始化定时器或者关闭定时器,程序就会从中断中退出,继续执行while中的程序

对于C51单片机,其内部总共有五级中断源
分别为外部中断0、定时器0、外部中断1、定时器1及串行中断。
C51单片机的中断使用时,主要是通过中断来决定的。
如你定义一个中断服务函数:
void KEY(void) intterrupt 0
{
}

当外部中断0申请中断时
会自动根据interrupt后面的0,找到上面定义的这个中断服务函数。
对于其他四个中断源,其对应的中断号分别为1、2 、3、4

这个问题很泛哦
把上电后只做一次的任务写到主函数里, 比如基本的初始化
把需要不断循环做的任务放到while(1)里,比如轮询,IO状态查询
把不知道什么时间会发生(比如外部中断,按键中断等)以及需要保证准时发生的任务(比如定时器时间到)放到中断里

刚刚学就多看看,别人的代码(在网上多找找),没有规定中断里应该写什么,主函数应该写什么,主循环应该写什么的!!!都是根据实际情况来的。。。
一般来说,中断里写进入中断后要处理的代码呗(要尽量短,最好先做标记处理,之后在根据标记在主循环里处理),主函数根据你的意思是在主函数的主循环之前的部分一般写初始化代码。初始化之后就是WHILE了。。。

中断里面一般只处理简单的事件,花尽可能短的时间,延时、等待等坚决不要放在中断程序里面。主程序里面一般可以放:初始化程序,计算类程序,界面类程序等等,while里面一般都是需要重复执行的程序,主程序里面肯定要有的,除了初始化以外,其他都可以放在while里面。

初始化的工作写在main里,比如设置定时器,IO初始电平等。
需要一直循环下去的任务写在while里,比如一直流水灯。
需要响应外界输入或者定时器事件的写在中断里。比如中断法读按键。

你是刚学吗?还是找本书来学习吧,先将书上的代码抄一遍,运行起来,然后一步步的理解它的意思,这样学习的更快更明白些。


帮忙用C语言写一段51单片机的程序,晶振12M。
include <reg52.h> \/ 本程序功能,输出方波,频率1-25ms 单片机@12MHz \/12T \/ sbit Pulse=P1^1; \/\/---方波 sbit Add=P3^2; \/\/---频率加 sbit Dec=P3^3; \/\/---频率减 sbit Start = P1^3; \/\/---开关键 sbit Display_Ten_Bit = P2^0;sbit Display_Bit_Bit = P2^1;code ...

在用c语言写单片机程序时 应该把什么写在中断什么写在主函数什么写在w...
这个问题很泛哦 把上电后只做一次的任务写到主函数里, 比如基本的初始化 把需要不断循环做的任务放到while(1)里,比如轮询,IO状态查询 把不知道什么时间会发生(比如外部中断,按键中断等)以及需要保证准时发生的任务(比如定时器时间到)放到中断里 ...

学习单片机指令系统对与用C语言编写单片机程序有什么帮助?
这完全是为了用最基础的方式帮助学生了解单片机原理,因为你不能指着51吃一辈子饭,将来你还得学其他的微处理器,没这个基础,你门儿都摸不着。这些指令系统能够让你理解单片机是如何工作的,为你今后的学习打基础。还有C不是万能的,在实际工作中有时候C代码处理问题会时间不准确或者“来不及”,这...

单片机,C语言写的一小段程序,高手帮看看
这是一个简单的流水灯实验,前面的void delay(uint)是一个函数申明,你这一段里面没有给delay函数,给的程序不够清晰。如果是延迟100ms的话,delay函数应该是这样的:void delay(unsigned int x){ unsigned int i,j;for( i =0;i < x;i++ ){ for( j =0;j<3;j++ );} } 给定delay(...

用C语言写msp430f149单片机程序怎么初始化晶振,使用8M和32768HZ的晶振...
1、用8除以晶振频率得到单指令周期指令的时间,然后根据这个时间计算循环次数。但是,这些计算是要花时间的,而且时间不定。如果延时时间长,这个时间或可以忽略,但是微秒级的延时,影响就很大了,所以,虽然可以,但是不实用。2、例程:void Clock_Init(){ uchar i;BCSCTL1&=~XT2OFF; \/\/打开XT2振...

求89C51单片机程序,用C语言编写,利用外部中断
方法类似,补写程序如下:include<reg51.h> define uint unsigned int define uchar unsigned char sbit LED=P0^0;sbit LED1=P0^1;void delay1ms (uint z){ uint x,y;for (x=z;x>0;x--)for (y=110;y>0;y--);} void exter() interrupt 2 { delay1ms(600);LED=0;delay1ms(200...

如何将单片机程序编译为c语言源代码?
3、把工程文件保存到目标文件夹里去,工程文件命名可以随意写入一些数字。4、选择单片机类型,根据实际情况进行选择,例如“Atmel”中的“89C52”。5、点击“文件”,在“文件”的下拉菜单中选择新建。6、最后把新建的文件保存到之前的工程组里去,文件命名的时候在后面加上“.c”就可以自动形成c文件。

用C语言编写AT89C51单片机程序,设计一个智能数字钟。
\/\/0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};\/\/0-F,-,共阴 uchar code table_d[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; \/\/0~9数组,带小数点 uchar table1[]={31,31,29,31,30,31,30,31,31,30,31,30,31}; \/\/闰年 uchar table2[...

在51单片机中用c语言keil写程序实现用一个按键控制8个灯的亮和灭(按...
include<reg52.h> sbit key = P1^0;\/\/按键 void delay(unsigned int time){ unsigned int i,j;for(i=0; i<time; i++)for(j=0; j<1000; j++){;} } void mian(){ unsigned int temp =0x00;while(1){ if(key == 0){ delay(20);\/\/适当延时,消除按键抖动,自己看实际情况...

求用C语言编写一个单片机89C51电子时钟程序,有时,分,秒,还有电路图_百 ...
)功 能:读取DS1302某地址的数据说 明:先写地址,后读命令\/数据 (内部函数)调 用:RTInputByte() , RTOutputByte()入口参数:ucAddr: DS1302地址返 回 值:ucData :读取的数据***\/uchar R1302(uchar ucAddr){ uchar ucData; T_RST = 0; T_CLK = 0; T_RST =...

东宝区19774584875: 在用c语言写单片机程序时 应该把什么写在中断什么写在主函数什么写在while里 -
蓟委尤特: 这个问题很泛哦 把上电后只做一次的任务写到主函数里, 比如基本的初始化 把需要不断循环做的任务放到while(1)里,比如轮询,IO状态查询 把不知道什么时间会发生(比如外部中断,按键中断等)以及需要保证准时发生的任务(比如定时器时间到)放到中断里

东宝区19774584875: 单片机C语言程序编写有什么写法思路 -
蓟委尤特: 程序编写一般都采用模块化编写,即把要求分成若干个相对独立的子模块,然后分别对每个子模块编程.特别是在大程序中,这样不仅能够简化思路而且方便调试和检查程序错误地方.总之,就是把大的东西细化,从而达到简单化,功能化的目的.

东宝区19774584875: 用汇编语言和c语言给单片机写程序时要把数字写出16进制,但是计算机只识别2进制,写成16进制有什么 -
蓟委尤特: 方便阅读,转换也很容易.一个16进制数表示4个二进制位,两个16进制数表示1个字节.不光要少,也要转换容易.

东宝区19774584875: c语言在单片机上应用时注意哪些知识
蓟委尤特: 还是我来告诉你吧!单片机上的C与标准的ANSIc并不完全一致,它有一些自己的特点和特殊的定义,譬如特殊寄存器,中断地址,位寻址等等,单片机的从C开发环境一般为KEILC

东宝区19774584875: 用C写单片机程序是不是应该看着时序图写好些?还有哪位可以告诉我单片机用到了哪些数电模电知识? -
蓟委尤特: 你要是做单片机研发设计就得学数模电路了,如果想在编程 (软件)方面的话,基本的数模电路就行 你编程得看芯片的时序图,图都看不懂怎么编程啊 如果你用不到这个芯片就不用看时序图了,比如最基本的LED数码管显示,就不用看时序图.在如你发数据想用串行口,就得看时序图,写指令还是写数据!总之,慢慢学吧,挺好懂得!我ijiushi这样过来的啊

东宝区19774584875: 编写单片机程序要用什么编程软件?用C语言编写单片机的程序,用哪种语言编程软件好? -
蓟委尤特: 单片机编程的语言既可以用C,也可以用汇编.用汇编的优势主要是程序可以被编程者优化,而不是由编译器优化,这样就可以绝对可控,你想了解更多行业资讯,可以多关注下微信公众号:嵌入式资讯精选

东宝区19774584875: 单片机C语言怎么编程`
蓟委尤特: 每一种单片机都有一套自己的C编译器,你可以直接用,也可以挂载到其他的编译环境中 比如 Wave6000 等 51系列的 推荐用keilV8 Microchip系列的推荐用HT-PICC 编译环境用MPLAB 然后编程代码部分你写好之后,编译,此时会生成一些文件,如*.hex ,*.bin …… 然后把.hex 文件 利用烧写器烧写到单片机里面 这样单片机就可以按照编译的程序执行了 单片机的种类不一样,程序代码也略有区别

东宝区19774584875: 在单片机的C语言程序设计中,如何使用SFR和可寻址位 -
蓟委尤特: 在C语言程序中,先包含一个“头文件”:#include 以后就可以对SFR进行读写操作了. 下面的C语言语句,都是对SFR的操作: TMOD = 0x11; //Timer0, Timer1工作于16位定时方式 TH0 = 0xdc; TL0 = 0x00; //Timer0置10ms定时初值 TH1 = 0xff; ...

东宝区19774584875: 如何用c语言编写单片机程序. -
蓟委尤特: 使用单片机专用的编译器,比如AVR单片机要用ICC for AVR、AVR Studio 等.然后在选项中选择单片机型号,比如ATmega16、ATmega128.最后要查询单片机所对应的库,也就是头文件.包含对应的头文件,头文件中有定义好的单片机的变量名和函数,写程序要用到,比如引脚可能定义为PORTA,这些要记住,不可以写其他的变量名.具体写程序,和普通的C程序没有什么区别.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网