📄 yk001.c
字号:
#include <ht48c06.h>
#pragma vector isr_4 @ 0x4
#pragma vector isr_8 @ 0x8
#define uchar unsigned char
#define PIN_YK _pa4
#define PIN_SK _pa5
#define PIN_LED _pa6
#define PIN_MIC _pa7
#define PIN_IN _pc1
#define tmrc4 _0e_4
#define EMI _0b_0
#define ETI _0b_2
#define SET_ADDR0 0B01010101
#define SET_ADDR1 0B01010101
#define SET_DATA1 0B11000000
#define SET_DATA2 0B00110000
#define SET_DATA3 0B00001100
#define SET_DATA4 0B00000011
unsigned char ADDRESS0;
unsigned char ADDRESS1;
unsigned char DATA;
unsigned char DELAY1,DELAY2;
unsigned char DELAY_ms,DELAY_s,DELAY_s2;
#pragma rambank0
bit Flag_SYNC;
bit Flag_Err;
bit Flag_sk_time;
bit Flag_sk_en;
bit Flag_sk_start;
bit Flag_yk;
void isr_4(){;}
void isr_8(){
DELAY1++;
if((Flag_sk_start)&&(Flag_sk_en))
{
if(PIN_MIC==0)
{Flag_sk_time=1;Flag_sk_start=0;PIN_SK=1;DELAY_s=0;}
}
DELAY2++;
if(DELAY2>=100)
{
DELAY2=0;
DELAY_ms++;
if(DELAY_ms>=100)
{
DELAY_ms=0;
if(Flag_yk==1)
{DELAY_s2++;if(DELAY_s2>=2){Flag_yk=0;Flag_sk_start=1;}}
if(Flag_sk_time==1)
{
DELAY_s++;
if(DELAY_s==58)
{PIN_SK=0;}
if(DELAY_s>=60)
{DELAY_s=0;Flag_sk_time=0;Flag_sk_start=1;}
}
}
}
}
void mcu_init(void)
{
_intc = 0;
_tmrc = 0;
_tmr = 0;
_pac = 0b10000000;
_pa = 0b00000000;
_pbc = 0b00000000;
_pb = 0b00000000;
_pcc = 0b00000010;
_pc = 0b00000000;
}
void DATA_TOP(void)
{
Flag_SYNC=0;
while(!Flag_SYNC)
{
_clrwdt1();_clrwdt2();
DELAY1=0;
while(PIN_IN==0){if(DELAY1>=67)break;}
if((DELAY1>58)&&(DELAY1<67))
{Flag_SYNC=1;}
}
}
void DATA_ADDRESS0(void)
{
uchar data_num;
data_num=0;
while(data_num<8)
{
_clrwdt1(); _clrwdt2();
DELAY1=0;
if(PIN_IN==1)
{
while(PIN_IN==1){if(DELAY1>=8){Flag_Err=1;break;}}
if((DELAY1>=5)&&(DELAY1<8))
{ADDRESS0<<=1;ADDRESS0++;data_num++;}
else if(DELAY1<1){Flag_Err=1;}
}
else if(PIN_IN==0)
{
while(PIN_IN==0){if(DELAY1>=8){Flag_Err=1;break;}}
if((DELAY1>=5)&&(DELAY1<8))
{ADDRESS0<<=1;data_num++;}
else if(DELAY1<1){Flag_Err=1;}
}
}
}
void DATA_ADDRESS1(void)
{
uchar data_num;
data_num=0;
while(data_num<8)
{
_clrwdt1(); _clrwdt2();
DELAY1=0;
if(PIN_IN==1)
{
while(PIN_IN==1){if(DELAY1>=8){Flag_Err=1;break;}}
if((DELAY1>=5)&&(DELAY1<8))
{ADDRESS1<<=1;ADDRESS1++;data_num++;}
else if(DELAY1<1){Flag_Err=1;}
}
else if(PIN_IN==0)
{
while(PIN_IN==0){if(DELAY1>=8){Flag_Err=1;break;}}
if((DELAY1>=5)&&(DELAY1<8))
{ADDRESS1<<=1;data_num++;}
else if(DELAY1<1){Flag_Err=1;}
}
}
}
void DATA_DATA(void)
{
uchar data_num;
data_num=0;
while(data_num<8)
{
_clrwdt1(); _clrwdt2();
DELAY1=0;
if(PIN_IN==1)
{
while(PIN_IN==1){if(DELAY1>=8){Flag_Err=1;break;}}
if((DELAY1>=5)&&(DELAY1<8))
{DATA<<=1;DATA++;data_num++;}
else if(DELAY1<1){Flag_Err=1;}
}
else if(PIN_IN==0)
{
while(PIN_IN==0){if(DELAY1>=8){Flag_Err=1;break;}}
if((DELAY1>=5)&&(DELAY1<8))
{DATA<<=1;data_num++;}
else if(DELAY1<1){Flag_Err=1;}
}
}
}
void main(void)
{
unsigned char temp;
mcu_init();
DELAY1=0;
DELAY2=0;
DELAY_ms=0;
DELAY_s=0;
DELAY_s2=0;
Flag_SYNC=0;
Flag_Err=0;
Flag_sk_time=0;
Flag_sk_start=1;
Flag_sk_en=0;
Flag_yk=0;
PIN_LED=0;
_tmr=0X9B;
_tmrc=0b10000001;
_intc =0b00000101;
tmrc4=1;
_clrwdt1();
_clrwdt2();
while(1)
{
_clrwdt1();_clrwdt2();
Flag_Err=0;
DATA_TOP();
DATA_ADDRESS0();
DATA_ADDRESS1();
DATA_DATA();
if((ADDRESS0==SET_ADDR0)&&(ADDRESS1==SET_ADDR1)&&(Flag_Err==0))
{
if(DATA==SET_DATA1)
{
Flag_yk=1;
Flag_sk_start=0;
DELAY_s2=0;
PIN_YK=1;
}
else if(DATA==SET_DATA2)
{
Flag_yk=1;
Flag_sk_start=0;
DELAY_s2=0;
PIN_YK=0;
}
else if(DATA==SET_DATA4)
{
if(Flag_sk_en==1)
{
Flag_sk_en=0;
Flag_sk_time=0;
Flag_sk_start=0;
DELAY_s=0;
PIN_LED=0;
PIN_SK=0;
}
}
else if(DATA==SET_DATA3)
{
if(Flag_sk_en==0)
{
Flag_sk_en=1;
Flag_sk_time=0;
Flag_sk_start=1;
DELAY_s=0;
PIN_LED=1;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -