stc89c51单片机P1^1输出20khz方波,程序怎么写

一定要用定时器写 , 最好有注释
用定时器1写

#include "reg51.h"
#define FOSC 12000000L

#define FREQ 20000

#define T1XX (65536-FOSC/12 /2/FREQ)+1  // 20000Hz timer calculation method in 12T mode

/* define SFR */
sbit TEST_FREQ = P1^1;               // Out


/* Timer1 interrupt routine */
void tm1_isr() interrupt 3 using 1
{
   
    TEST_FREQ = ! TEST_FREQ;
  TL1 += T1XX;                     //reload timer1 low byte
  TH1 = T1XX >> 8;                //reload timer1 high byte
}

//-----------------------------------------------

/* main program */
void main()
{
    TMOD = 0x10;                    //set timer1 as mode1 (16-bit)
    TL1 = T1XX;                     //initial timer1 low byte
    TH1 = T1XX >> 8;                //initial timer1 high byte
  TEST_FREQ=1;
    TR1 = 1;                        //timer1 start running
    ET1 = 1;                        //enable timer1 interrupt
    EA = 1;                         //open global interrupt switch
    while (1);                      //loop
}

追问

不错 很好 的

追答

好不好与我无关,我也是抄来的,嘿嘿

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-10
需要先指定晶振频率。追问

不指定就说明 任何都可以

追答

;
ORG 0000H
MOV TMOD, #2
MOV TH0, 231
SETB TR0
LP:
JNB TF0, $
CLR TF0
CPL P1.1
JMP LP

END

相似回答
大家正在搜