MPL115A2, AM2321 ATmega1284P を使用する
|
MPL115A はI2Cの通信タイプの小型気圧デバイスである
|
7SEG LEDは アノードコモンを使用する
TD62783、TD62503 のドライバーを使用してダイナミック点灯をさせる
抵抗は 270オームである
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
プログラムーーーーーーーーーーーーーーーーーーー
今回も C言語で書いる
ーーーーーーーーーーー
// 温度、気圧 7セグ表示
// KIOND7-* 2016-6-20
//
// ATmega1284p
// -------------------------------------------------
// 内部 Xtal =8M H=DF L=F2
//
// PA0-PA7 OUT
// PD0-PD7 =OUT
//
// PC0 = SCL PC1=SDA
//
// PA7= LED 動作
//----------------------------------------------------
#include <avr/io.h>
#define F_CPU 8000000UL //内部8M
#include <avr/delay.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
// 擬似命令
#define LOL_on PORTD |= _BV(PD0) //ONDO
#define LOL_off PORTD &=~_BV(PD0)
#define LOH_on PORTD |= _BV(PD1)
#define LOH_off PORTD &=~_BV(PD1)
#define LSL_on PORTD |= _BV(PD2)
#define LSL_off PORTD &=~_BV(PD2)
#define LSH_on PORTD |= _BV(PD3) //湿度
#define LSH_off PORTD &=~_BV(PD3)
#define LK1_on PORTD |= _BV(PD4)
#define LK1_off PORTD &=~_BV(PD4)
#define LK2_on PORTD |= _BV(PD5) //気圧H
#define LK2_off PORTD &=~_BV(PD5)
#define LK3_on PORTD |= _BV(PD6)
#define LK3_off PORTD &=~_BV(PD6)
#define LK4_on PORTD |= _BV(PD7) //気圧L
#define LK4_off PORTD &=~_BV(PD7)
#define a2_ON PORTA |= _BV(PA0) //H
#define a2_OFF PORTA &=~_BV(PA0) //L
#define b2_ON PORTA |= _BV(PA1) //H
#define b2_OFF PORTA &=~_BV(PA1) //L
#define c2_ON PORTA |= _BV(PA2) //H
#define c2_OFF PORTA &=~_BV(PA2) //L
#define d2_ON PORTA |= _BV(PA3) //H
#define d2_OFF PORTA &=~_BV(PA3) //L
#define e2_ON PORTA |= _BV(PA4) //H
#define e2_OFF PORTA &=~_BV(PA4) //L
#define f2_ON PORTA |= _BV(PA5) //H
#define f2_OFF PORTA &=~_BV(PA5) //L
#define g2_ON PORTA |= _BV(PA6) //H
#define g2_OFF PORTA &=~_BV(PA6) //L
#define LD1_ON PORTA |= _BV(PA7) //動作用
#define LD1_OFF PORTA &=~_BV(PA7)
#define KEY_Z bit_is_clear (PINB,PB0)
uint8_t sidx[] = {0,0,0,0,0,0,0,0,0,0,0,0,0}; // 初期化 sidx[0]=0,sidx[1]=0,sidx[2]=0,sidx[3]=0
uint8_t n_on1;
uint8_t n_on2;
uint8_t n_s1;
uint8_t n_s2;
uint8_t n_k1;
uint8_t n_k2;
uint8_t n_k3;
uint8_t n_k4;
volatile uint8_t o_data[12]; //温度データ
volatile uint8_t r_data[12]; //読込データ
volatile uint8_t vram[10];
uint8_t ans;
uint16_t count;
uint16_t count1;
//ondo 湿度----------------
uint8_t R1;
uint8_t R2;
uint8_t R3;
uint8_t R4;
uint8_t R5;
uint8_t R6;
uint8_t R7;
uint8_t R8;
uint8_t R9;
uint16_t situdo10;
uint16_t ondo10;
// 気圧 --------------------
uint16_t RpaH;
uint16_t RpaL;
uint16_t RtaH;
uint16_t RtaL;
uint16_t Ra0H;
uint16_t Ra0L;
uint16_t Rb1H;
uint16_t Rb1L;
uint16_t Rb2H;
uint16_t Rb2L;
uint16_t Rc12H;
uint16_t Rc12L;
uint16_t twsr_buf1;
uint16_t twsr_buf2;
uint16_t situdo10;
uint16_t ondo10;
int32_t ka0;
int32_t kb1;
int32_t kb2;
int32_t kc12;
int32_t Padc;
int32_t Tadc;
int32_t Pcomp;
int32_t Press;
// 小数点表示
double ka0_s;
double kb1_s;
double kb2_s;
double kc12_s;
//------------------------------------------------
// 7セグ用LEDテーブル --------------------------
unsigned char SEGCHAR[]=
{
// 0b0GFEDCBA
0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00100111, //7
0b01111111, //8
0b01101111, //9
0b00000000, //null=10
// 0b0GFEDCBA
0b00110111, //M('U'の逆さで)
0b01011100, //o
0b01010100, //n
0b00110001, //T('「'の形で)
0b00011100, //u
0b01111011, //e
0b01111110, //W('A'の逆さで)
0b01011110, //d
0b01110100, //h
0b01110001, //F
0b01010000, //r
0b00010000, //i
0b01101101, //S('5'と同じだが構わない)
0b01011111, //a
0b01111000, //t
// 0b0GFEDCBA
0b00100000, //AMのドット
0b00010000, //PMのドット
0b00000001, //A
0b01000000, //- =25(i)
};
enum _SIDX
{
SIDX_NULL = 10,
SIDX_M,
SIDX_o,
SIDX_n,
SIDX_T,
SIDX_u,
SIDX_e,
SIDX_W,
SIDX_d,
SIDX_h,
SIDX_F,
SIDX_r,
SIDX_i,
SIDX_S,
SIDX_a,
SIDX_t,
SIDX_AM,
SIDX_PM,
SIDX_A,
SIDX_B,
};
//*---------------timer-----------------------------
void wait_ms(uint16_t m ) //1=1ms
{
while(m--) _delay_ms(1);
}
//-----
void wait_us(uint16_t m ) //1=1us
{
while(m--) _delay_us(1);
}
//-------気圧 係数読出し命令送信----------------------
void KIATU_RS(void)
{
/* 開始条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTA) |(1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 08を返すので*SLA_W 書込アドレス送出
TWDR=0b11000000; //C0
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 18 ACK を受け取る OK
/*DATA 係数コード送出 0x04 */
TWDR=0x04;
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//04データが送られたので 28 を返す
// リピーテッドスタート Restart -------------------
TWCR = (1<<TWINT)|(1<<TWSTA) |(1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 08を返すので*SLA_W 書込アドレス送出
/*DATA 係数コード再送出 0xC1 */
TWDR=0xC1;
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//40 コードを返す SLA+R が送られ、ACKを返す
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[5]=ans; //a0-MSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[6]=ans; //a0-LSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[7]=ans; //b1-MSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[8]=ans; //B1-LSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[9]=ans; //b2-MSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[10]=ans; //B2-LSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[11]=ans; //C12-MSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[12]=ans; //C12-LSB
//TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
/* 停止条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTO) |(1<<TWEN);
wait_ms(100);
//終了したので TWSRは 0xF8を返す
}
//---- READ ondo -------------
void KIATU_READ(void)
{
int i;
/* 開始条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTA) |(1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//08を返すので、*SLA_W 書込アドレス送出
TWDR=0b11000000; //C0
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 18 ACK を受け取る OK
/*DATA 変換コード送出 0x12 */
TWDR=0x12;
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//12データが送られたので 28 を返す
TWDR=0x00;
TWCR = (1<<TWINT) | (1<<TWEN); //最後のデータはNACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//00データが送られたので 28 を返す
/* 停止条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTO) |(1<<TWEN);
wait_ms(2); //
//-----------------------------------------------------
/* 開始条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTA) |(1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//08を返すので、*SLA_W 書込アドレス送出
wait_ms(2); //
TWDR=0b11000000; //C0
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 18 ACK を受け取る OK
/*DATA 変換コード送出 0x00 */
TWDR=0x00;
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//00データが送られたので 28 を返す
// リピーテッドスタート Restart -------------------
TWCR = (1<<TWINT)|(1<<TWSTA) |(1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 08を返すので*SLA_W 書込アドレス送出
TWDR=0xC1;
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//40 コードを返す SLA+R が送られ、ACKを返す
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[1]=ans; //padc-MSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[2]=ans; //padc -LSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[3]=ans; //Tadc-MSB
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得
r_data[4]=ans; //Tadc-Lsb
//TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
TWCR = (1<<TWINT) | (1<<TWEN); //最後はNack
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
/* 停止条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTO) |(1<<TWEN); //stop
wait_ms(100);
}
//---------------------------------------------------------------
// 気圧計算式
//
//
// a0=((a0H << 8)+ a0L)/8
// if(a0H & 0x80){a0=8192-a0;}
//
// b1 =((b1H << 8)+b1L)/8192
// if(b1& 0x80){b1=8-b1;}
//
// b2 =((b2H << 8)+ b2L)/16384
// if(b2H&0x80){b2=4-b2;}
//
// c12 =((c12H << 8)+c12L)/32768
// if(c12H& 0x80){c12=2-C12;}
//
// Padc= ((RpaH<<8)+RpaL)/64
// Tadc= ((RtaH<<8)+RtaL)/64
//
// pcomp = a0+((b1+c12)*Tadc)+ b2+Tadc
//
// Press = (pcomp * ((115-50)/1023 +50) *10
//
//
//
void keisan(void)
{
RpaH=r_data[1];
RpaL=r_data[2];
RtaH=r_data[3];
RtaL=r_data[4];
Ra0H=r_data[5];
Ra0L=r_data[6];
Rb1H=r_data[7];
Rb1L=r_data[8];
Rb2H=r_data[9];
Rb2L=r_data[10];
Rc12H=r_data[11];
Rc12L=r_data[12];
//----- a0 係数計算 符号ビット プラス--------
ka0=((Ra0H << 8)+ Ra0L); //16820
// if(Ra0H & 0x80 ){ka0=8192-ka0;}
ka0_s=(double)ka0/8; //小数点計算
//----- b1 係数計算 符号ビットマイナス--------
kb1 =((Rb1H << 8)+Rb1L);
//if(Rb1H& 0x80){kb1=8-kb1;}
kb1_s=(double)kb1/8192;
kb1_s=8-kb1_s;
//----- b1 係数計算 符号ビット マイナス--------
kb2 =((Rb2H << 8)+Rb2L);
//if(Rb2H& 0x80){kb2=4-kb2;}
kb2_s=(double)kb2/16384;
kb2_s=4-kb2_s;
//----- b1 係数計算 符号ビット プラス--------
kc12 =((Rc12H << 8)+Rc12L); //14232
//if(Rc12H& 0x80){kc12=2-kc12;}
kc12_s=(double)kc12/32768;
kc12_s=kc12_s/512;
//----------------------------
Padc= ((RpaH<<8)+RpaL)/64;
Tadc= ((RtaH<<8)+RtaL)/64;
//------------------------------------
// Pcomp = ka0+((kb1+kc12)*Tadc)+ kb2+Tadc; //794
Pcomp = ka0_s-(kb1_s-(kc12_s*Tadc))*Padc- (kb2_s*Tadc);
// Press= Pcomp* (115-50)/1023 +50 *10倍する
Press = (0.0635386*Pcomp+50)*10 ; //1004
}
//------センサーを休止状態から呼び起こす-------------------------------------
void ONDO_ST(void)
{
/* 開始条件送出*/
TWCR = (1<<TWSTA)|(1<<TWINT) |(1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
/*SLA_W 書込アドレス送出 */
TWDR=0b10111000; //B8
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
/*DATA RTCアドレス送出 0x00 */
// NACK を受け取る 0x20 返す
wait_ms(2);
/* 停止条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTO) |(1<<TWEN); //stop
wait_ms(1);
}
//-------読出し命令送信----------------------
void ONDO_RS(void)
{
/* 開始条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTA) |(1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 08を返すので*SLA_W 書込アドレス送出
TWDR=0b10111000; //B8
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 18 ACK を受け取る
/*DATA 機能コード送出 0x03 */
TWDR=0x03;
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//03データが送られたので 28 を返す
/*SLA_R 読込アドレス送出 */
TWDR=0x00; //00
TWCR = (1<<TWINT) | (1<<TWEN); //Nack
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//00が贈られたので 28を返す
/*SLA_R 読込アドレス送出 */
TWDR=0x04; //00
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//04が送られたので 28を返す
/* 停止条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTO) |(1<<TWEN);
wait_ms(10);
//終了したので TWSRは 0xF8を返す
}
//---- 読み取りREAD ondo -------------
void ONDO_READ(void)
{
int i;
/* 開始条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTA) |(1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
//08を返すので、*SLA_W 書込アドレス送出
TWDR=0b10111001; //B9
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
// 18 ACK を受け取る
wait_us(30); //30us
ans=TWDR; //データ取得 03H
o_data[1]=ans;
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
LD1_ON;
ans=TWDR; //データ取得 04H
o_data[2]=ans;
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得 S_MSB
o_data[3]=ans;
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得 S_LSB
o_data[4]=ans;
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得 O_MSB
o_data[5]=ans;
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得 O-LSB
o_data[6]=ans;
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得 CRC_MSB
o_data[7]=ans;
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
ans=TWDR; //データ取得 CRC_LSB
o_data[8]=ans;
//TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN); //ACK
TWCR = (1<<TWINT) | (1<<TWEN); //NACK
while(!(TWCR & (1<<TWINT))); //;TWINT=1まで待機
/* 停止条件送出*/
TWCR = (1<<TWINT)|(1<<TWSTO) |(1<<TWEN); //stop
wait_ms(100);
}
// 測定ルーチン -------------------------------
void sokutei(void)
{
ONDO_ST();
ONDO_RS();
ONDO_READ();
R1=o_data[1];
R2=o_data[2];
R3=o_data[3];
R4=o_data[4];
R5=o_data[5];
R6=o_data[6];
R7=o_data[7];
R8=o_data[8];
// 気圧 MPL115A2 係数読出し---------------------
KIATU_RS();
Ra0H=r_data[5];
Ra0L=r_data[6];
Rb1H=r_data[7];
Rb1L=r_data[8];
Rb2H=r_data[9];
Rb2L=r_data[10];
Rc12H=r_data[11];
Rc12L=r_data[12];
// 気圧 読み込み --------------------
KIATU_READ();
RpaH=r_data[1];
RpaL=r_data[2];
RtaH=r_data[3];
RtaL=r_data[4];
keisan();
// Pcomp表示 ---------------
// Press =1014; //test
n_k4=Press/1000;
n_k3=(Press-(n_k4*1000))/100;
n_k2=(Press-(n_k4*1000)-(n_k3*100))/10;
n_k1=Press-(n_k4*1000)-(n_k3*100)-(n_k2*10);
situdo10=(256*R4)+R5;
ondo10=(R6*256)+R7;
//situdo10=450;
//ondo10=250;
n_on2=ondo10/100;
n_on1=(ondo10-(n_on2*100))/10;
n_s2=situdo10/100;
n_s1=(situdo10-(n_s2*100))/10;
sidx[0] = n_on1;
sidx[1] = n_on2;
sidx[2] = n_s1;
sidx[3] = n_s2;
sidx[4] = n_k1;
sidx[5] = n_k2;
sidx[6] = n_k3;
sidx[7] = n_k4;
}
//-----------------------------------------------------------
int main () {
DDRB = 0x00; // 0b0000-0000
DDRC = 0x00; // 0b0000-0000
DDRD = 0xFF; // 0b1111-1111
DDRA = 0xFF; //out
PORTA = 0xFF; // H 出力
PORTD = 0x00; // L 出力
PORTC = 0xFF; // H 出力
//---------------------------------------------
// SCL=8M/(16+ 2*92*1)=43kHz
TWBR=120; //92
TWSR=0x00; //ビット速度値
TWCR=0b00000100; // TWI SCL/SDA で使用する
//---------------------
// 温度 ----------------------------
LD1_ON;
wait_ms(600); // AM2321はすぐに立ち上がらないため
LD1_OFF;
count=0;
sokutei();
while(1){
PORTA = SEGCHAR[sidx[0]];
LOL_on;
wait_ms(2);
LOL_off;
PORTA = SEGCHAR[sidx[1]];
LOH_on;
wait_ms(2);
LOH_off;
PORTA = SEGCHAR[sidx[2]];
LSL_on;
wait_ms(2);
LSL_off;
PORTA = SEGCHAR[sidx[3]];
LSH_on;
wait_ms(2);
LSH_off;
PORTA = SEGCHAR[sidx[4]];
LK1_on;
wait_ms(2);
LK1_off;
PORTA = SEGCHAR[sidx[5]];
LK2_on;
wait_ms(2);
LK2_off;
PORTA = SEGCHAR[sidx[6]];
LK3_on;
wait_ms(2);
LK3_off;
PORTA = SEGCHAR[sidx[7]];
LK4_on;
wait_ms(2);
LK4_off;
count=count+1;
if (count == 3000)
{LD1_ON;
sokutei();
count=0;
LD1_OFF;
}
} //while(1)終了
return 0;
}
|