附 录2
W_DAT EQU 30H W_CS EQU 31H WZ EQU 33H DZ_WZ EQU 34H
LEDCS1 EQU 39H;;;;;;1S延时
LEDCS2 EQU 3AH;;;;;;结束红灯;;;;;;;;;;;;;;;;;;;;;;;;; FHW EQU 3BH CH1_DZ EQU 32H BZ_Z BIT 00H
BZ_ZC BIT 02H ;标志,正常:为0不正常;为1正常 BZ_DD BIT 03H ;等待标志: 为0不等待;为1等待 OVER BIT 04H CH1 BIT 05H FY_W BIT 06H;放音位 R_LED BIT P3.1;;;;;;;;;;;;; G_LED BIT P3.0;;;;;;;;;;;;; YY_KZ BIT P3.5 CS BIT P1.7 CLK BIT P1.6 DI BIT P1.4 DO BIT P1.5 LATCH BIT P1.2 DI_595 BIT P1.3 CP_595 BIT P1.1 ORG 0000H LJMP MAIN ORG 000BH
32
LJMP LED_T0 ORG 0030H MAIN: LCALL QNC MOV DZ_WZ,#40H MOV CH1_DZ,#25H MOV FHW,#00H ;LCALL XS MOV TMOD,#11H MOV TH0,#3CH MOV TL0,#0B0H CLR TR0 CLR ET0 CLR EA SETB OVER SETB R_LED SETB G_LED CLR BZ_DD SETB FY_W MOV P1,#0FFH MOV P3,#0FFH CLR CH1
LCALL CGQ_CSH ;传感器初始化 CLR OVER ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETB TR0 SETB ET0 SETB EA
MOV LEDCS1,#20 MA_1: LCALL PJ_CL;平均处理 LCALL MCP3002
33
JNB CH1,CH_8 LCALL LJ
CPL CH1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LJMP MA_1 CH_8: LCALL D_JH ;D加和 LCALL JB_PD;级别判断 ; LCALL XS ;显示 CPL CH1 LJMP MA_1
;===================================================== ;子程部分============================================= QNC: MOV R0,#20H MOV R5,#60H QNC_1: MOV @R0,#00H INC R0 DJNZ R5,QNC_1 RET
;======================================================= MCP3002:CLR EA CLR TR0 CLR ET0 SETB CS
CLR CS ;片选 CLR CLK
JB CH1,CH_1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV W_DAT,#0D0H;写入要发送的数据 1101 LJMP CH_11
CH_1: MOV W_DAT,#0F0H;取CH1通道的数据;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CH_11: MOV W_CS,#04H
34
LCALL FS_SJ ;以上发送数据 ;空操作位 CLR CLK NOP
SETB CLK ;接收数据 LCALL JS_SJ ;状态复位 SETB CS CLR CLK NOP
JB OVER,MCP_3 SETB TR0 SETB ET0 SETB EA
MCP_3: JB CH1,CH_4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV A,DZ_WZ ;判断是否到7FH单元 CJNE A,#80H,MCP_2 MOV DZ_WZ,#40H LJMP MCP_2
CH_4: MOV A,CH1_DZ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CJNE A,#2DH,MCP_2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV CH1_DZ,#25H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MCP_2: RET
;===================================================== FS_SJ: MOV A,W_DAT MOV R2,W_CS FS_1: RLC A MOV DI,C SETB CLK
35
CLR CLK DJNZ R2,FS_1 RET
;====================================================== ;接收数据放40H开始的单元-----7FH单元,64个单元 JS_SJ: PUSH 00H MOV R3,#8
JB CH1,CH_2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV R0,DZ_WZ ;给首址 LJMP CH_22
CH_2: MOV R0,CH1_DZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CH_22: MOV A,@R0 CLR CLK SETB CLK MOV C,DO RLC A CLR CLK SETB CLK MOV C,DO RLC A ANL A,#02H
MOV @R0,A ;以上接收高2位 ;
MOV 23H,A
INC R0 ;指向下一个,存储单元 JS_1: CLR CLK SETB CLK MOV C,DO RLC A DJNZ R3,JS_1
36