本帖最后由 MOP 于 2016-10-28 14:36 编辑
例2. 用T1模式2计数,外部计数信号由T1(P3.5)引脚输入,每出现一次负跳变计数器加1,要求每计满200次,使P1.0端取反。
#include
SETB P1_0=P1^0;
void main()
{ TMOD=0x60; // 设置T1为模式2计数工作方式
TH1=0x38; // 赋初值
TL1=0x38;
TR1=1; //启动T1计数器
while(!TF0);
TF0=0;
P1_0=~P1_0;
}
定義可在標頭檔找到,我找的是STC15Fxxxx.h
sbit TF0 = TCON^5; //定时器0溢出中断标志位
但您可發現您用的是Timer1,怎是用Timer0的標誌,就是問題所在了,應該改為
sbit TF1 = TCON^7; //定时器1溢出中断标志位
所以
#include
SETB P1_0=P1^0;
void main()
{ TMOD=0x60; // 设置T1为模式2计数工作方式
TH1=0x38; // 赋初值
TL1=0x38;
TR1=1; //启动T1计数器
while(!TF1);
TF1=0;
P1_0=~P1_0;
}
圖為TIMER1模式2,這樣就符合題目需求了