?? pwm.c
字號:
/*****************************************/
/* Copyright (c) 2005, 通信工程學院 */
/* All rights reserved. */
/* 作 者:戴 佳 */
/*****************************************/
#include "PWM.h"
/* 定時器0中斷服務子程序 */
void timer0_int() interrupt 1 using 1
{
TR0 = 0; // 關閉T0
TH0 = -(20000/256); // 重置20ms定時器的計數初值
TL0 = -(20000%256);
/* 用8254計數器發(fā)送第1路PWM信號 */
COMWORD = 0x30;
// 1MHz時鐘作為計數時鐘,計數1000次,實現1ms高電平
COUNT0 = 0xE8;
COUNT0 = 0x03;
/* 用8254計數器發(fā)送第2路PWM信號 */
COMWORD = 0x70;
// 1MHz時鐘作為計數時鐘,計數2000次,實現2ms高電平
COUNT0 = 0xD0;
COUNT0 = 0x07;
/* 用8254計數器發(fā)送第3路PWM信號 */
COMWORD = 0xB0;
// 1MHz時鐘作為計數時鐘,計數3000次,實現3ms高電平
COUNT0 = 0xB8;
COUNT0 = 0x0B;
TR0 = 1; // 啟動T0
}
/* 主程序 */
void main()
{
EA = 1; // 開CPU中斷
ET0 = 1; // 開定時器0中斷
TMOD = 0x01; // 定時器0方式1
TH0 = -(20000/256); // 20ms定時器的計數初值
TL0 = -(20000%256);
/* 向8254控制字寄存器選擇計數器0,并對其賦初值0 */
COMWORD = 0x30;
COUNT0 = 0; // 先賦低位字節(jié)
COUNT0 = 0; // 再賦高位字節(jié)
/* 向8254控制字寄存器選擇計數器1,并對其賦初值0 */
COMWORD = 0x70;
COUNT0 = 0; // 先賦低位字節(jié)
COUNT0 = 0; // 再賦高位字節(jié)
/* 向8254控制字寄存器選擇計數器2,并對其賦初值0 */
COMWORD = 0xB0;
COUNT0 = 0; // 再賦低位字節(jié)
COUNT0 = 0; // 再賦高位字節(jié)
TR0 = 1; // 啟動定時器T0
while(1){} // 無限循環(huán)
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -