欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
通過串口發送01、02、03控制51單片機p10輸出5Khz,30、60、90%占空比pwm波
[打印本頁]
作者:
huxingjie9
時間:
2026-1-16 18:50
標題:
通過串口發送01、02、03控制51單片機p10輸出5Khz,30、60、90%占空比pwm波
#include <reg52.h>
// 定義端口
sbit PWM_OUT = P1^0;
// PWM參數定義
#define PWM_PERIOD 200 // PWM周期200μs(對應5KHz)
unsigned int high_time = 60; // 默認高電平時間60μs(30%占空比)
unsigned int count = 0; // 定時器計數變量
// 串口初始化函數(9600波特率,晶振11.0592MHz)
void UART_Init() {
TMOD |= 0x20; // 定時器1工作在模式2(8位自動重裝)
TH1 = 0xFD; // 9600波特率初值(11.0592MHz)
TL1 = 0xFD;
TR1 = 1; // 啟動定時器1
SCON = 0x50; // 串口工作在模式1,允許接收
EA = 1; // 開啟總中斷
ES = 1; // 開啟串口中斷
}
// 定時器0初始化(用于PWM生成,1μs中斷一次)
void Timer0_Init() {
TMOD |= 0x01; // 定時器0工作在模式1(16位定時器)
TH0 = (65536 - 10) / 256; // 11.0592MHz晶振,10μs中斷一次
TL0 = (65536 - 10) % 256;
ET0 = 1; // 開啟定時器0中斷
TR0 = 1; // 啟動定時器0
}
// 定時器0中斷服務函數(生成PWM)
void Timer0_ISR() interrupt 1 {
// 重裝定時器初值
TH0 = (65536 - 10) / 256;
TL0 = (65536 - 10) % 256;
count += 10; // 累計時間(每次中斷10μs)
// PWM生成邏輯
if(count < high_time) {
PWM_OUT = 1; // 高電平
} else if(count < PWM_PERIOD) {
PWM_OUT = 0; // 低電平
} else {
count = 0; // 周期重置
}
}
// 串口中斷服務函數(接收指令)
void UART_ISR() interrupt 4 {
unsigned char cmd;
if(RI) { // 接收中斷標志位
RI = 0; // 清除接收中斷標志
cmd = SBUF; // 讀取接收的數據
// 根據指令設置占空比
if(cmd == 0x01) {
high_time = 60; // 30%占空比(60μs高電平)
} else if(cmd == 0x02) {
high_time = 120; // 60%占空比(120μs高電平)
} else if(cmd == 0x03) {
high_time = 180; // 90%占空比(180μs高電平)
}
}
}
// 主函數
void main() {
UART_Init(); // 初始化串口
Timer0_Init(); // 初始化定時器0
PWM_OUT = 0; // 初始電平置低
while(1) {
// 主循環空操作,PWM和串口由中斷處理
}
}
復制代碼
作者:
歐陽云天
時間:
2026-2-2 22:10
弱弱的問一句,這代碼是怎么復制到帖子里的,我只能當純文本復制過來,這個像圖片一樣帶行數的是怎么弄的,我發的就是這樣的
void init_uart( ) //2400bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位數據,可變波特率
AUXR &= 0xFB; //定時器時鐘12T模式
BRT = 0xF4; //設置定時重載值
AUXR |= 0x01; //串口1使用獨立波特率發射器為波特率發生器
//AUXR |= 0x10; //啟動獨立波特率發射器
}
作者:
vscos
時間:
2026-2-17 09:44
歐陽云天 發表于 2026-2-2 22:10
弱弱的問一句,這代碼是怎么復制到帖子里的,我只能當純文本復制過來,這個像圖片一樣帶行數的是怎么弄的, ...
在發送信息的窗口上有對尖括號,那是插入代碼的地方,把你的代碼插進去就行了
作者:
ljy5606
時間:
2026-2-28 11:33
不錯的代碼,學習中
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1