|
#include "reg51.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define FOSC 11059200L
//-----------------------------------------------
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;
sfr AUXR = 0x8e; //輔助特殊功能寄存器
sfr INT_CLKO = 0x8f; //喚醒和時鐘輸出功能寄存器
sbit T1CLKO = P3^4; //定時器1的時鐘輸出腳
#define F38_4KHz (65536-FOSC/2/38400) //1T模式
//#define F38_4KHz (65536-FOSC/2/12/38400) //12T模式
//-----------------------------------------------
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
AUXR |= 0x40; //定時器1為1T模式
// AUXR &= ~0x40; //定時器1為12T模式
TMOD = 0x00; //設(shè)置定時器為模式1(16位自動重裝載)
TMOD &= ~0x40; //C/T1=0, 對內(nèi)部時鐘進行時鐘輸出
// TMOD |= 0x40; //C/T1=1, 對T1引腳的外部時鐘進行時鐘輸出
TL1 = F38_4KHz; //初始化計時值
TH1 = F38_4KHz >> 8;
TR1 = 1;
INT_CLKO = 0x02; //使能定時器1的時鐘輸出功能
while (1); //程序終止
}
用這個程序把時鐘主頻及輸出頻率改一下,效果不錯。我前一陣做了個400K的脈沖發(fā)生器。 |
|