求单片机高手帮忙写一段小程序(流程图已给出,用C语言写):或许会看不到图,附件里有完整的,我QQ是799973948 求高手求解啊,急···红外遥控接收部分与发射部分初始化程序如图2.8、图2.10所示,红外遥控接收部分与发射部分主程序如图2.9、图2.11所示。
http://www.eehome.cn/file:///C:/DOCUME~1/lenovo/LOCALS~1/Temp/ksohtml/wps_clip_image-8036.png
红外遥控发射部分初始化程序,初始化程序主要是使P1口和P2口复位,即为将P1口和P2口为高电平状态,关闭遥控输出口P3.5口,设置中断优先级IP,选择定时器/计数器1和设置操作模式为自动8位重载模式。
红外遥控发射部分主程序,先调用初始化程序,再完成调用键盘程序和进入低功耗空闲待机方式。系统完成键盘查询程序后进入空闲节电方式,直到外部中断1中断或硬件复位而退出,CPU再次转向循环部分调用键盘程序。
http://www.eehome.cn/file:///C:/DOCUME~1/lenovo/LOCALS~1/Temp/ksohtml/wps_clip_image-8118.png
红外遥控接收部分初始化程序,初始化程序主要是使P1口和P2口复位,即为将P1口和P2口为高电平状态,设置堆栈sp,选择工作寄存器区,设置中断优先级IP,开外部中断0,设置电机默认停机标志位。
红外遥控接收部分主程序,先调用初始化程序,初始化程序完毕,进入主程序循环状态。程序在循环中主要任务是50Hz交流电过零检测和调用移相角控制的延时程序。
红外遥控键盘扫描程序流程图如图2.12所示,红外发射程序如图2.13所示。
键盘扫键过程:首先判断控制键是否按下,若有控制键按下则进行逐行扫描,按照P口值查找键号。最后按照键号转至相应的发射程序。
红外信号发射过程:首先装入发射脉冲个数(发射时为3ms脉冲,停发时为1ms脉冲),此时若发射脉冲个数为1则返回主程序;若不为1则发1ms脉冲,然后停发1ms脉冲,这样便结束整个发射过程。
在实践中,采用红外线遥控方式时,由于受遥控距离,角度等影响,使用效果不是很好,如采用调频或调幅发射接收码,可提高遥控距离,并且没有角度影响。
http://www.eehome.cn/file:///C:/DOCUME~1/lenovo/LOCALS~1/Temp/ksohtml/wps_clip_image-8248.png
中断过程:首先判断低电平脉宽度是否大于2ms,若脉宽不到2ms,则中断返回;若低电平大于2ms,则接收并地低电平脉冲计数,接下来看判断高电平脉宽度冲是否大于3ms,若脉宽不到3ms,则返回上一接收计数过程;若高电平脉宽大于3ms,则按照脉冲个数至对应功能程序,此时中断返回。
http://www.eehome.cn/file:///C:/DOCUME~1/lenovo/LOCALS~1/Temp/ksohtml/wps_clip_image-8340.png
[ 此帖被affect1819在2011-05-07 20:26重新编辑 ]