You are on page 1of 2

#include <.

h>

#include <pic18f4520.h>

#define LED1 RB0

#define LED2 RB1

#define LED3 RB2

#define LED4 RB3

#define BTN1 RA0

#define BTN2 RA1

#define BTN3 RA2

#define BTN4 RA3

// Khai báo biến

uint16_t PWM = 0;

uint8_t speed = 0; // tốc đ động cơ

uint8_t state = 0; // trạng thái động cơ (0: dừng, 1: thuận, 2: ngược)

// Đọc trạng thái của các nút nhấn và trả về một giá trị 4-bit

uint8_t readButtons() {

uint8_t btns = 0;

if (BTN1) btns |= 0x01;

if (BTN2) btns |= 0x02;

if (BTN3) btns |= 0x04;

if (BTN4) btns |= 0x08;

return btns;

// Cập nhật tốc độ và PWM tương ứng với delta

void updateSpeed(uint8_t delta) {


speed += delta;

if (speed > 100) speed = 100;

else if (speed <0) speed = 0;

PWM = speed * 10; // Tính giá trị PWM tương ứng với tốc độ

// Giảm tần số PWM tới 1.5KHz

T2CON = 0b00000111; // bật Timer2 với prescale: 1:16

PR2 = 150; // đặt giá trị PR2 để tần số PWM bằng 1.5KHz

CCP1CON = 0b00111100; // đặt chế độ PWM, cho

You might also like