本帖最后由 sh1900 于 2021-10-22 18:01 編輯
輸出一個閃爍燈電路,為什么編的是反的,即原本S1低電平時,3腳也為低,現在的是S1為低,則3腳為高,S1為高,則3腳為低,反過來了。剛學單片機不懂,哪里的毛病?
2021-10-21_181436.jpg (86.49 KB, 下載次數: 75)
下載附件
2021-10-21 18:15 上傳
2021-10-22_180112.jpg (60.58 KB, 下載次數: 67)
下載附件
2021-10-22 18:01 上傳
++++++++++++++++++++++++++++++++++++
/*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;
}
}
|