广州唯创电子有限公司 WT5801M14使用说明书
one_line: ;////一线发码子程序
CLR SDA
MOV R6,#5 ;延时5MS LCALL DELAY1MS
MOV A,DAIFAZHI
LOOP: SETB SDA
RRC A
JNC DIDIANPIN ;高电平脉冲 高:低=3:1
LCALL DELAY200US LCALL DELAY200US
LCALL DELAY200US
CLR SDA
LCALL DELAY200US LJMP LOOP1
DIDIANPIN: ;低电平脉冲 高:低=1:3
LCALL DELAY200US
CLR SDA LCALL DELAY200US
LCALL DELAY200US
LCALL DELAY200US
LOOP1: DJNZ R5,LOOP
MOV R5,#08H
SETB SDA
RET
DELAY200US: MOV R6,#100 ;延时400US子程序
DJNZ R6,$
RET
;延时1ms子程序,可以给R6赋值修改延时时间
DELAY1MS:
L1: MOV R7,#248
DJNZ R7,$ DJNZ R6,L1 RET
END
-第 17 页-
广州唯创电子有限公司 WT5801M14使用说明书
10.2、一线串口控制C语言程序
说明:此程序为测试程序,请根据实际应用来更改MCU端IO口; #include
sbit KEY=P1^1; /*P1_1为P1口的第2位*/ sbit SDA=P3^0; /*P3_0为P3口的第4位*/
void delay1ms(unsigned char count) //1MS延时子程序 {
unsigned char i,j,k;
for(k=count;k>0;k--) for(i=2;i>0;i--) for(j=248;j>0;j--);
}
void delay100us(unsigned char count) //100US延时子程序 { unsigned char i;
unsigned char j;
for(i=count;i>0;i--) for(j=50;j>0;j--);
}
Send_oneline(unsigned char addr)
{
unsigned char i; SDA=0;
delay1ms(5); /* delay 5ms */ for(i=0;i<8;i++)
{SDA=1;
if(addr & 1)
{delay100us(6); /* 600us */
SDA=0;
delay100us(2); /* 200us */ }
else {
delay100us(2); /* 200us */
-第 18 页-
广州唯创电子有限公司 WT5801M14使用说明书
SDA=0;
delay100us(6); /* 600us */ }
addr>>=1; } SDA=1;
}
main()
{unsigned char FD=0;
P3=0XFF; while(1)
{
if(KEY==0)
{
delay1ms(10);
if(KEY==0) //通过按键P1.1来进行发码值的递增
{
Send_oneline(FD);
FD++;
if(FD==220) //一线串口时,语音段暂时最多为220段 } }
}
}
{ FD=0; }
while(KEY==0); //等待按键释放,以免一次按键误判成几次
10.3、三线串口控制汇编程序
说明:此程序为测试程序,请根据实际应用来更改MCU端IO口; ORG 0000H
KEY EQU P1.1 ;按键引脚 CS EQU P3.1 ;CS触发引脚
-第 19 页-
广州唯创电子有限公司 WT5801M14使用说明书
SCL EQU P3.2 ;时钟引脚 SDA EQU P3.0 ;数据引脚
DAIFAZHI EQU 50H ;发码值暂存地址
MOV DAIFAZHI,#0H;发码初始值为0
MAIN:
JB KEY,MAIN
MOV R6,#20 ;延时20MS LCALL DELAY1MS
JB KEY,MAIN ;按键去抖判断 JNB KEY,$ ;等待按键释放 LCALL THREE_LINE;调用三线发码子程序 INC DAIFAZHI ;发码值加1 MOV A,DAIFAZHI
CJNE A,#220,XX2 ;是否到达语音段最大值220 XX2: JC XX3
MOV DAIFAZHI,#0H XX3: LJMP MAIN
THREE_LINE: ;////三线发码子程序
CLR CS
MOV R6,#5 ;延时5MS LCALL DELAY1MS
MOV R5,#8 ;发码8位循环
MOV A,DAIFAZHI
LOOP:
CLR SCL
RRC A
MOV SDA,C LCALL DELAY50US SETB SCL
LCALL DELAY50US
DJNZ R5,LOOP MOV R5,#08H
-第 20 页-

