以下是用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开始。

用PIC写一个流水灯

原文地址: https://www.cveoy.top/t/topic/zM4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录