在51单片机编程中 初始化程序的作用是什么

如题所述

1.将一些变量转换为初始值,如0或1。

2.如果使用zd,则需要设置定时器的工作模式和初始值。

3.如果使用中断,应该打开相应中断源的中断并设置优先级。

4.如果使用串口,则需要设置相应的串口工作模式和波特率

5.需要提前设置的其他数据变量和命令字。

扩展资料:

初始化器子函数带注释:

Voidtimer0interrupt()1

TMOD=0x01;//选择timing0

TH0=(65536-50000)/256;//加载初始值50MS

TL0=(65536-50000)%256;

EA=1;//打开完全中断

ET0=1;//打开定时器0中断

TR0=1;//开属定时器0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-11
51编程得看外部电路的连接情况。没有电路图,木有办法写。。。
1.
数码管和单片机之间的电路有很多种,你这种就用译码器,74138就行。假设单片机p1口用作数码管输出。
2.
滑槽电路也不清楚,假设一个电机,用的是p2^0,p2^1(顺时针一个口,逆时针一个口)
3.
检测非金属物料的电路用的是p2^3

4.
按键电路用的是p3口
代码就不贴了,说下思路。
开机初始化,给单片机所有引脚置零,然后设置数码管显示(2位十进制数显示至少需要7个引脚,你这里只需要用4个引脚)。
按键处理,编程中需要注意的地方就是机械开关的抖动消除,当然,如果有硬件消抖电路就不用管了。假设k1用的是p3^1口,那么只需要判断p3^1==1为真,就可以拉高p2^0或p2^1口电压,直接p2^0=1就ok。
检测非金属物电路:检测到一个非金属物料,此电路就给单片机p2^3发送一个脉冲信号。
单片机这边,主循环里检测p2^3口的电平,用一个变量oldstate来保存上一个状态。用count来保存非金属物料个数
if(oldstate!=p2^3){
count++;
oldstate=p^3;
}
计数值满10后滑槽下降初始位:
if(count==10){
p2^0==0;
p2^1==1;
count=0;
}
当然,如果电路还没做的话,我推荐一个电路,这个电路编程更简单,效率更高。
还是假设非金属检测电路一旦检测到非金属就发出一个脉冲信号。
将非金属检测电路同一个计数器(计数器可以买现成芯片,也可以自己用触发器做)的输入端连接。计数器同数码管通过译码器连接。
单片机p1口同计数器输出端连接。单片机同计数器清零端连接。
单片机同滑槽连接。
单片机同键盘连接。
这个电路就只需要读计数器的值,不用控制数码管。
单片机启动时向计数器清零端发出清零信号,那么数码管就显示00
单片机程序主循环判断计数器的值,若为10,那么向计数器清零端发出清零信号;控制滑槽下降。
单片机程序主循环判断键盘的值,若k1按下,控制滑槽上升。
第2个回答  推荐于2017-11-25
1把某些变量变成初始值,比如0或者1.
2如果用到定时器需要设置定时器的工作方式及初值。
3如果用到中断需要开放相应的中断源的中断并设置优先级。
4如果用到串口需要设置串口相应工作方式及波特率等。
5其它需要预先设置的数据变量及命令字。追问

在主函数的开始设置一下,和这个初始化有什么区别吗?

追答

是一回事,初始化就要在主程序开始

本回答被提问者采纳
第3个回答  2012-07-22
做准备啊!!
相似回答