初级会员
- 积分
- 163
- 金钱
- 163
- 注册时间
- 2016-12-1
- 在线时间
- 22 小时
|
1金钱
#define MAIN_Fosc 11059200L //定义主时钟
#include "15W4KxxS4.H"
#define uint unsigned int
#define uchar unsigned char
#define T1MS (65536-MAIN_Fosc/1000)
/********************************************
引脚别名定义
*********************************************/
sbit LED_R=P0^6; //三色指示灯之红色LED用IO口P06
uchar cnt = 0;
void Timer0Init(void)
{
AUXR = 0x80; //定时器0为1T模式
TMOD &= 0xF8; //定时器0为16位自动重装模式
TMOD |= 0x08; //定时器0为16位自动重装模式
TL0 = T1MS;
TH0 = T1MS >> 8;
TR0 = 1; //定时器开始计时
ET0 = 1; //使能定时器0中断
}
void timer0_int (void) interrupt 1
{
cnt++;
if(cnt ==1000) //定时的是1ms进一次中断,但是为什么我这里写1000灯就不亮了??????????
{
LED_R = ~LED_R; //点亮红色指示灯
cnt = 0;
}
}
//主函数
int main()
{
/////////////////////////////////////////////////
//注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为
// 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用
//相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
// P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
/////////////////////////////////////////////////
P0M1 = 0; P0M0 = 0; //设置P0.0~P0.7为准双向口
P1M1 = 0; P1M0 = 0; //设置P1.0~P1.7为准双向口
P2M0 = 0; P2M1 = 0; //设置P2.0~P2.7为准双向口
P3M1 = 0; P3M0 = 0; //设置P3.0~P3.7为准双向口
P4M1 = 0; P4M0 = 0; //设置P4.0~P4.7为准双向口
P5M1 = 0; P5M0 = 0; //设置P5.0~P5.7为准双向口
Timer0Init();
EA = 1; //使能总中断
while(1);
}
|
最佳答案
查看完整内容[请看2#楼]
char cnt; 这个 char是8位 就是说最大是256 而你的是cnt是1000, 就是说cnt加不到1000.
|