本帖最后由 sh1900 于 2021-10-22 18:01 编辑
输出一个闪烁灯电路,为什么编的是反的,即原本S1低电平时,3脚也为低,现在的是S1为低,则3脚为高,S1为高,则3脚为低,反过来了。刚学单片机不懂,哪里的毛病?
++++++++++++++++++++++++++++++++++++
/*1个定时器,定时100毫秒,,计数4次就是400毫秒,P3.4翻转一次状态,500次*100毫秒,就是50秒*/
#include <STC15F104E.H>
sbit KEY=P3^3;
sbit T04=P3^4;
sbit T50=P3^5;
unsigned int x,y;
void Timer0Init(void) //100毫秒@6.000MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xB0; //设置定时初始值
TH0 = 0x3C; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
}
void main()
{
P3M1 = 0x00;
P3M0 = 0x30;
Timer0Init();
EA=1;
KEY=1;
while(1);
}
void time0() interrupt 1
{
x++;y++;
if(x>=4) {T04=~T04;x=0;}
if(KEY)
{
if(y<500) {T50=0;}
if(y>=500) {T50=1;}
if(y>=600) y=0;
}
else
{
T50=0;
y=0;
}
}
|