#include "regx52.h"
void Delay(int time)
{ while(time--) //while ループには 10us かかります { } }
void Timer0Init(void) //1 ミリ秒 @11.0592MHz
{
TMOD &= 0xF0; //タイマーモードを設定します
TMOD |= 0x01; //タイマーモードを設定します
TL0 = 0x66; //タイマーの初期値を設定します
TH0 = 0xFC; //タイマーの初期値を設定します
TF0 = 0; // TF0 フラグをクリア
TR0 = 1; //タイマ 0 が計時を開始
ET0 = 1;
EA = 1;
PT0 = 0;
}
int i,count,LEDMode;
//割り込み後に実行する必要のある内容
void Timer0_motion()割り込み 1
{
TL0 = 0x66; //タイミングの初期値を設定
TH0 = 0xFC; //タイミングの初期値を設定
count++;
if( count == 500 )
{
if(LEDMode == 0) //LED ライトが左に移動
{ if(i>=8)i=0; P2=~(0x01<<i); i++; }
if(LEDMode == 1) //LEDランプ右移
{ if(i<0)i=7; P2=~(0x01<<i); 私 - ; カウント =0; }
}
//独立キーの信号処理
int Key(void)
{
int キー番号 = 0;
if(P3_1==0){遅延(1000);while(P3_1==0);遅延(1000);キー番号 = 1;} if(P3_0==0){
遅延(2000);while(P3_0==0 );遅延(2000);キー番号 = 2;}
if(P3_2==0){遅延(2000);while(P3_2==0);遅延(2000);キー番号 = 3;} if(
P3_3==0) {遅延(2000);while(P3_3==0);遅延(2000);キー番号 = 4;}
キー番号を返します。
}
int main()
{ int KeyNum; //タイマーの初期化 Timer0Init(); while(1) { KeyNum=Key(); //独立したキーのステータスを受け取り、返す if(KeyNum) { if(KeyNum == 1) { LEDMode++ ; if(LEDMode>=2)LEDMode=0; } } } return 0; }
実験現象