#include "REG52.H" void initial_myself(); void initial_peripheral(); void delay_short(unsigned int uiDelayshort); void delay_long(unsigned int uiDelaylong); void led_flicker(); /* 注释一: * 吴坚鸿个人的命名风格:凡是输出后缀都是_dr,凡是输入后缀都是_sr。 * dr代表drive驱动,sr代表sensor感应器 */ sbit led_dr = P3 ^ 5; void main() //学习要点:深刻理解鸿哥首次提出的三区一线理论 { /* 注释二: * initial_myself()函数属于鸿哥三区一线理论的第一区, * 专门用来初始化单片机自己的寄存器以及个别外围要求响应速度快的输出设备, * 防止刚上电之后,由于输出IO口电平状态不确定而导致外围设备误动作, * 比如继电器的误动作等等。 */ initial_myself(); /* 注释三: * 此处的delay_long()延时函数属于第一区与第二区的分割线, * 延时时间一般是0.3秒到2秒之间,等待外围芯片和模块上电稳定。 * 比如液晶模块,AT24C02存储芯片,DS1302时钟芯片, * 这类芯片有个特点,一般都是跟单片机进行串口或并口通讯的, * 并且不要求上电立即处理的。 */ delay_long(100); /* 注释四: * initial_peripheral()函数属于鸿哥三区一线理论的第二区, * 专门用来初始化不要求上电立即处理的外围芯片和模块. * 比如液晶模块,AT24C02存储芯片,DS1302时钟芯片。 * 本程序基于朱兆祺51单片机学习板。 */ initial_peripheral(); /* 注释五: * while(1){}主函数循环区属于鸿哥三区一线理论的第三区, * 专门用来编写被循环扫描到的非中断应用程序 */ while(1) { led_flicker(); //LED闪烁应用程序 } } void led_flicker() //LED闪烁应用程序 { led_dr = 1; //LED亮 delay_short(50000); //延时50000个空指令的时间 /* 注释六: * delay_long(100)延时50000个空指令的时间,因为内嵌了一个500次的for循环 */ led_dr = 0; //LED灭 delay_long(100); //延时50000个空指令的时间 } /* 注释七: * delay_short(unsigned int uiDelayShort)是小延时函数, * 专门用在时序驱动的小延时,一般uiDelayShort的数值取10左右, * 最大一般也不超过100.本例为了解释此函数的特点,取值范围超过100。 * 此函数的特点是时间的细分度高,延时时间不宜过长。uiDelayShort数值 * 的大小就代表里面执行了多少条空指令的时间。数值越大,延时越长。 * 时间精度不要刻意去计算,感觉差不多就行。 */ void delay_short(unsigned int uiDelayShort) { unsigned int i; for(i = 0; i < uiDelayShort; i++) { ; //一个分号相当于执行一条空语句 } } /* 注释八: * delay_long(unsigned int uiDelayLong)是大延时函数, * 专门用在上电初始化的大延时, * 此函数的特点是能实现比较长时间的延时,细分度取决于内嵌for循环的次数, * uiDelayLong的数值的大小就代表里面执行了多少次500条空指令的时间。 * 数值越大,延时越长。时间精度不要刻意去计算,感觉差不多就行。 */ void delay_long(unsigned int uiDelayLong) { unsigned int i; unsigned int j; for(i = 0; i < uiDelayLong; i++) { for(j = 0; j < 500; j++) //内嵌循环的空指令数量 { ; //一个分号相当于执行一条空语句 } } } void initial_myself() //初始化单片机 { led_dr = 0; //LED灭 } void initial_peripheral() //初始化外围 { ; //本例为空 }
收藏0 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
232
3223
12
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号