走马灯实验主函数main()分析
时间: 2023-07-01 14:29:05 浏览: 39
走马灯实验的主函数main()通常包含了初始化代码和控制代码两部分。初始化代码用于初始化系统和外设,控制代码用于控制走马灯的运行。
以51单片机为例,走马灯实验通常使用LED灯作为外设。在主函数中,需要调用LED_Init函数来初始化LED灯,然后通过循环或者定时中断来控制LED灯的闪烁顺序和频率。
下面是一个简单的走马灯实验的主函数main()示例:
```
#include <reg51.h>
#include "LED.h"
void main() {
LED_INIT_DATA led_init_data;
led_init_data.mode = 0x01; // 手动模式
led_init_data.freq_div = 0x00; // 时钟源为Fosc/12
led_init_data.int_en = 0x00; // 禁止中断
LED_Init(&led_init_data); // 初始化LED灯
while(1) {
LED_CTRL_REG led_ctrl;
led_ctrl.bit0 = 1; // 打开LED1
led_ctrl.bit1 = 0; // 关闭LED2
led_ctrl.bit2 = 0; // 关闭LED3
led_ctrl.bit3 = 0; // 关闭LED4
LED_CTRL = led_ctrl; // 设置LED灯控制寄存器
Delay(1000); // 延时1秒
led_ctrl.bit0 = 0; // 关闭LED1
led_ctrl.bit1 = 1; // 打开LED2
led_ctrl.bit2 = 0; // 关闭LED3
led_ctrl.bit3 = 0; // 关闭LED4
LED_CTRL = led_ctrl; // 设置LED灯控制寄存器
Delay(1000); // 延时1秒
led_ctrl.bit0 = 0; // 关闭LED1
led_ctrl.bit1 = 0; // 关闭LED2
led_ctrl.bit2 = 1; // 打开LED3
led_ctrl.bit3 = 0; // 关闭LED4
LED_CTRL = led_ctrl; // 设置LED灯控制寄存器
Delay(1000); // 延时1秒
led_ctrl.bit0 = 0; // 关闭LED1
led_ctrl.bit1 = 0; // 关闭LED2
led_ctrl.bit2 = 0; // 关闭LED3
led_ctrl.bit3 = 1; // 打开LED4
LED_CTRL = led_ctrl; // 设置LED灯控制寄存器
Delay(1000); // 延时1秒
}
}
void Delay(unsigned int n) {
unsigned int i, j;
for(i=0; i<n; i++) {
for(j=0; j<125; j++);
}
}
```
这个主函数中,首先调用LED_Init函数来初始化LED灯,并设置LED灯的工作模式、时钟源和中断使能。然后进入一个无限循环中,每次循环都设置LED灯的控制寄存器来控制LED灯的闪烁顺序和频率,然后延时1秒钟。在延时函数Delay()中,使用一个简单的循环来实现延时功能。
总之,走马灯实验的主函数main()需要调用LED_Init函数来初始化LED灯,并通过循环或者定时中断来控制LED灯的闪烁顺序和频率。理解这个主函数的实现原理,是走马灯实验的关键。