51单片机初学者程序模块整理

需积分: 9 2 下载量 7 浏览量 更新于2024-07-24 1 收藏 52KB DOC 举报
该资源是针对初学者的51单片机编程教程,总结了常见的程序模块,包括程序开头的定义、延时函数、数码管显示、外部中断和定时器/计数器的使用。 一、程序开头 在51单片机编程中,常用的程序开头会包含必要的头文件,并定义一些数据类型别名。`#include<reg52.h>`包含了51单片机的寄存器定义,使得可以直接访问硬件寄存器。`#define uint unsigned int`和`#define uchar unsigned char`是为了简化代码,将无符号整型和无符号字符型定义为别名。`#include<intrins.h>`则是为了能使用像`_crol_()`、`_crol_()`和`_nop_()`这样的内联汇编函数,这些函数通常用于位操作和延时等低级任务。 二、延时函数 延时函数是51单片机编程中的基础模块,用于实现程序的暂停。在这个例子中,提供了一个简单的延时1ms的函数`delay(unsigned int y)`,通过两个嵌套的for循环实现,可以根据需要调整延时时间。 三、数码管显示 数码管显示模块涉及到数码管的段选和位选。`LED[]`数组存储了0到f对应的段码,而`wx[]`和`dx[]`数组分别对应1到8和0到9的位选编码,用于驱动共阴极和共阳极数码管。通过这些字模,可以控制数码管显示特定的数字或字符。 四、外部中断初始化 外部中断是单片机对外部事件作出响应的重要机制。这里展示了如何初始化外部中断0(INT0),通过设置`EA=1`开启中断总允许,`EX0=1`开启外部中断0,`IT0=0`设置INT0为低电平触发。根据需求,`IT0`也可以设置为1,变为电平跳变触发。 五、定时器使用 定时器在51单片机中常用于周期性任务,如延时或产生脉冲。`dq0()`函数初始化定时器0,`TMOD=0x01`设置为工作模式1,即定时器模式,然后启动定时器0(`TR0=1`)。`TH0`和`TL0`设置了定时初值,以便定时器在溢出前达到指定的时间间隔(50ms)。 六、计数器应用 计数器模式与定时器类似,但由外部输入信号驱动。`jq0()`函数设置定时器0为工作模式1的计数器模式(`TMOD=0x05`),同样启动计数器0。在计数器模式下,单片机会根据外部信号的变化自动计数。 以上就是51单片机初学者常遇到的一些关键程序模块,掌握这些基本模块的使用,能够帮助初学者更好地编写和理解51单片机的控制程序。在实际项目中,可以根据需要组合和扩展这些模块,以实现更复杂的系统功能。