?? sh403.c
字號(hào):
#include <reg52.h>
#include <absacc.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
// 定義8253的寄存器地址,發(fā)出PWM信號(hào)
#define COMI XBYTE[0x3100] // 定義8253R的控制字寄存器地址
#define C0I XBYTE[0x0100] // 定義8253R的計(jì)數(shù)器0寄存器地址
#define C1I XBYTE[0x1100] // 定義8253R的計(jì)數(shù)器1寄存器地址
#define C2I XBYTE[0x2100] // 定義8253R的計(jì)數(shù)器2寄存器地址
sbit P1_2=P1^2;
//sbit EXF2=T2CON^6;
uint i,sendflag;
uint BUF810,BUF811,BUF812;
uint BUF810H,BUF810L;
uint BUF811H,BUF811L;
uint BUF812H,BUF812L;
uchar h,l,a,b,c;
//主函數(shù),初始化定時(shí)器和片外寄存器
void main(void)
{
EA=1; PT0=1;
ET0=1;
IT0=1;IT1=1;
EX0=1;EX1=1;ET2=1;
T2CON=0x08;
//用定時(shí)器0產(chǎn)生18ms的中斷信號(hào),為8253輸出PWM信號(hào)提供時(shí)鐘周期基準(zhǔn)。
TMOD=0x21;
TH0=0xB9;
TL0=0xB0;
// 向8253R中的控制字寄存器中選擇計(jì)數(shù)器0,并對(duì)其幅初值0;
COMI=0x30;
C0I=0;C0I=0;
// 向8253R中的控制字寄存器中選擇計(jì)數(shù)器1,并對(duì)其幅初值0;
COMI=0x70;
C1I=0;C1I=0;
// 向8253R中的控制字寄存器中選擇計(jì)數(shù)器2,并對(duì)其幅初值0;
COMI=0xB0;
C2I=0;C2I=0;
TR0=1;
sendflag=1;
while(1){}
}
// 定時(shí)器中斷1,向8253發(fā)送控制數(shù)據(jù)
void intsvr1(void) interrupt 1
{
TH0=0xB9; //用定時(shí)器1產(chǎn)生18ms的中斷信號(hào),為8253T輸出PWM信號(hào)提供時(shí)鐘周期基準(zhǔn)。
TL0=0xB0;
// 用8253計(jì)數(shù)器發(fā)送PWM信號(hào)
COMI=0x30;
C0I=BUF810L;
C0I=BUF810H;
COMI=0x70;
C1I=BUF811L;
C1I=BUF811H;
COMI=0xB0;
C2I=BUF812L;
C2I=BUF812H;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -