用PIC写一个流水灯
以下是用PIC16F877A编写的流水灯程序
#include <xc.h>
#pragma config FOSC = HS // 使用高速晶体振荡器作为系统时钟
#pragma config WDTE = OFF // 禁用看门狗定时器
#pragma config PWRTE = OFF // 禁用上电复位定时器
#pragma config BOREN = OFF // 禁用低电压复位
#pragma config LVP = OFF // 禁用低电压编程模式
#pragma config CPD = OFF // 禁用数据保护
#pragma config WRT = OFF // 禁用写保护
#pragma config CP = OFF // 禁用代码保护
#define _XTAL_FREQ 20000000 // 系统时钟频率为20MHz
void main(void) {
TRISB = 0x00; // 设置B端口为输出模式
PORTB = 0x01; // 最开始只点亮第一个LED
while(1) {
__delay_ms(100); // 延时100ms
PORTB <<= 1; // 左移一位
if(PORTB == 0) // 如果移动到了最高位,重新从第一个LED开始
PORTB = 0x01;
}
}
该程序通过设置TRISB寄存器将B端口设置为输出模式,然后通过PORTB寄存器控制LED的点亮和熄灭。程序中使用了__delay_ms()函数来实现延时,<<=运算符实现了左移一位的操作,if语句判断是否移动到了最高位,如果是则重新从第一个LED开始。
原文地址: https://www.cveoy.top/t/topic/zM4 著作权归作者所有。请勿转载和采集!