发布网友 发布时间:2022-04-23 10:01
共2个回答
热心网友 时间:2023-09-21 10:02
首先,是单灯如何点亮的问题,无非就是某个GPIO口输出高电平或者低电平(由外部电路决定)使灯亮灭,假设输出高电平为亮,输出低电平为灭。
其次,1hz闪烁,即代表定时1s开、关灯。所以要用到定时器。
代码如下:
#include "stdio.h"
#define LED_ON P1.1 = 1;
#define LED_OFF P1.1 = 0;
bit flag_1s;
bit flag_cnt;
void main(void) {
Sys_Init();
while(1) {
if(flag_1s == 1) {
flag_1s = 0;
if(flag_cnt ^= 1)
LED_ON;
else
LED_OFF;
}
}
}
Sys_Init() {
// 初始化MCU的IO口
// 初始化定时器
}
void Timer_ISR (void) interrupt 1 { // 定时器中断处理函数 1s 进入一次
flag_1s = 1;
}
热心网友 时间:2023-09-21 10:02
通过定时器中断来做一个1ms时基,然后累加这个时基1000次的时候,清零累加并翻转IO口。