请求解释单片机C语言问题

我是个学单片机的新手,看的是51单片机C语言程序编程,对用C语言编的单片机程序有好多地方不懂,有谁知道的希望告诉我,#include<reg51.h>
#include<stdio.h>
Uart_Init();
main{Uart_Init();
EX0=1;
EA=1;
while(1); 这个地方为什么要用while语句啊?而且还是死循环
}
void int0() interrupt 0 using 0 这个函数真的是看不懂,
{ printf("External Interrupt 0 responded\n");
}
Uart_Init() 这个函数定义的一下内容有什么用啊?基本上C语言编的都定义这个的,我就是不知道为什么?
{SCON=OX52;
TMOD=OX20;
TCON=OX69;
TH1=OXf3;
}
谁能详细的解释每条语句的用处给我啊?

单片机编程开始几步:
1.定义寄存器(又叫寄存器初始化).
2.初始化全局变量.
3.初始化局部变量.
4.中断位的开启及中断优先级的开启.等等.
main()为程序的入口点,程序进入后首先调用Uart_Init()对SCON(串行控制寄存器),TMOD(定时器/计数器控制寄存器),TCON(定时器/计数器方式寄存器)初始化及定时器1的TH1初始化,一般还会有个TL1 = 0x00,这里没有(建议还是加上).
然后程序执行到EX0 = 1为开启外部中断0,即充许外部中断0中断.
EA = 1;为开启总中断.
void int0() interrupt 0 using 0
int0():这个是函数名你可以自已随便取.只要是形象直观.
interrupt:为中断的关键字.
0:中断源,中断源如下:
数字0:表示外部中断0;入口地址(0003H);
数字1:表示定时器/计数器0中断;入口地址(000BH);
数字2:表示外部中断1中断;入口地址(0013H);
数字3:表示定时器/计数器1中断;入口地址(001BH);
数字4:表示串行口中断;入口地址(0023H);
只有以上五种数字可选.
using:关键字.
0:为中断数据交换所用到的寄存器组共有0-3四组可选.
while(1):你问为什么会有这个,因为没有这个死循环,你的程序只能执行一次就退出去了,为了使你的程序不断的重复执行,所以有这个.
OK,我就说这么多了,解释得够清楚了.可怜你没给分....5555
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-02
while(1); 程序是没有终点的 ,所以用死循环
}
void int0() interrupt 0 using 0 这个是中断函数
{ printf("External Interrupt 0 responded\n");
}
Uart_Init() 这个函数定义 中断参数,
{SCON=OX52;
TMOD=OX20;
TCON=OX69;
TH1=OXf3;
}
第2个回答  2008-12-02
1.while(1)在这边的作用标明,主程序什么都不用干,所有的工作都是由中断来处理,主程序只要等待就行了;
2.void int0() interrupt 0 using 0这个函数是中断执行的程序,分3部分,void int0() 是函数名;interrupt 0是指使用哪个中断;using 0是bank的选择,一般是用来保护数据,比如当多个中断都调用R7的时候,为了保证在各个中断中的R7各自不变化,可以分别使用using 0,using 1,using 2等来保护;
3.Uart_Init() 是对寄存器的初始化,不对寄存器初始化,也就不能执行相应的中断。
第3个回答  2008-12-03
给你个正解
1.while(1)
因为系统你总不能让它运行一次就结束吧,一般都是不停的检测,哪个条件符合了就执行哪个功能
2.void int0() interrupt 0 using 0
interrupt 和 using 都是 C51 的关键字。C51 中断过程通过使用 interrupt 关键字和中断号(0 到 31)来实现。中断号指明编译器中断程序的入口地址中断序号对应着 8051中断使能寄存器IE 中的使能位,对应关系如下:
IE寄存器 C51中的 8051的
的使能位 中断号 中断源
--------------------------------
IE.0 0 外部中断0
IE.1 1 定时器0 溢出
IE.2 2 外部中断1
IE.3 3 定时器1 溢出
IE.4 4 串口中断
IE.5 5 定时器2 溢出

有 了这一声明,编译器不需理会寄存器组参数的使用和对累加器A、状态寄存器、寄存器B、数据指针和默认的寄存器的保护。只要在中断程序中用到,编译器会把它 们压栈,在中断程序结束时将他们出栈。C51 支持所有 5 个 8051 标准中断从 0 到 4 和在 8051 系列(增强型)中多达 27 个中断源。
using 关键字用来指定中断服务程序使用的寄存器组。用法是:using 后跟一个0 到3 的数,对应着 4 组工作寄存器。一旦指定工作寄存器组,默认的工作寄存器组就不会被压栈,这将节省 32 个处理周期,因为入栈和出栈都需要 2 个处理周期。这一做法的缺点是所有调用中断的过程都必须使用指定的同一个寄存器组,否则参数传递会发生错误。因此对于using,在使用中需灵活取舍

3.Uart_Init()
这只是个函数名称,可以随便命名,但是按照编程的习惯UART是串口,INIT是初始化的意思,常用_连接,所以合起来就是串口初始化