本周对发射部分进行了焊接调试以及接收部分的代码代码RS BIT P1.0EN BIT P1.2LCD_PORT DATA P1FLAG_1S BIT 20H.0PULSE_L EQU 30H ; INT0 脉冲计数 低字节PULSE_M EQU 31H ; 中字节PULSE_H EQU 32H ; 高字节FREQ_L EQU 33H ; 频率快照FREQ_M EQU 34HFREQ_H EQU 35HCNT_MS EQU 36HORG 0000HLJMP STARTORG 0003H ; INT0 中断LJMP INT0_ISRORG 001BH ; T1 中断LJMP T1_ISRORG 0030HSTART:MOV SP, #5FHMOV LCD_PORT, #82H ; P110000010, RS/EN0, data0CLR RSCLR ENLCALL DELAY_20MSLCALL DELAY_20MSLCALL LCD_INITLCALL DELAY_10MSMOV A, #80H ; 第一行开头LCALL WRITE_CMDMOV DPTR, #STR_FREQLCALL SHOW_STR ; 显示 Freq:MOV PULSE_L, #00HMOV PULSE_M, #00HMOV PULSE_H, #00HMOV FREQ_L, #00HMOV FREQ_M, #00HMOV FREQ_H, #00HMOV CNT_MS, #00HCLR FLAG_1S; T1: 16位定时器, INT0: 边沿触发MOV TMOD, #10HMOV TH1, #4CHMOV TL1, #00HSETB IT0 ; INT0 下降沿触发SETB EX0 ; 开 INT0SETB ET1 ; 开 T1SETB EASETB TR1; 主循环 MAIN:JNB FLAG_1S, MAINCLR FLAG_1SLCALL DISP_FREQSJMP MAIN; INT0 脉冲计数 INT0_ISR:PUSH ACCINC PULSE_LMOV A, PULSE_LJNZ INT0_RETINC PULSE_MMOV A, PULSE_MJNZ INT0_RETINC PULSE_HINT0_RET:POP ACCRETI; T1 50ms 中断 T1_ISR:PUSH ACCPUSH PSWMOV TH1, #4CHMOV TL1, #00HINC CNT_MSMOV A, CNT_MSCJNE A, #20, T1_RETMOV CNT_MS, #00HCLR EX0MOV FREQ_L, PULSE_LMOV FREQ_M, PULSE_MMOV FREQ_H, PULSE_HMOV PULSE_L, #00HMOV PULSE_M, #00HMOV PULSE_H, #00HSETB EX0SETB FLAG_1ST1_RET:POP PSWPOP ACCRETI; 显示频率 (4位) DISP_FREQ:MOV R5, FREQ_LMOV R6, FREQ_MMOV R7, FREQ_HMOV R0, #40HMOV R1, #4 ; 4位数字DF_CNV:LCALL DIV24_10MOV A, R4ADD A, #0MOV R0, AINC R0DJNZ R1, DF_CNV; 40H个位, 41H十位, 42H百位, 43H千位MOV A, #85H ; 第一行第6列Freq:之后LCALL WRITE_CMDMOV R0, #43H ; 最高位千位地址MOV R1, #4MOV R2, #1DF_DISP:MOV A, R0CJNE R2, #1, DF_OUTCJNE R1, #1, DF_CHKSJMP DF_OUTDF_CHK:CJNE A, #0, DF_NZMOV A, # ; 前导零消隐显示空格DF_OUT2:LCALL WRITE_DATADEC R0DJNZ R1, DF_DISPSJMP DF_UNITDF_NZ:MOV R2, #0DF_OUT:LCALL WRITE_DATADEC R0DJNZ R1, DF_DISPDF_UNIT:MOV A, #HLCALL WRITE_DATAMOV A, #zLCALL WRITE_DATARET; 24位÷10 DIV24_10:MOV R4, #00HMOV R3, #24DV_S:CLR CMOV A, R5RLC AMOV R5, AMOV A, R6RLC AMOV R6, AMOV A, R7RLC AMOV R7, AMOV A, R4RLC AMOV R4, ACLR CSUBB A, #10JC DV_NMOV R4, AINC R5DV_N:DJNZ R3, DV_SRET; LCD 4位 (P1.6-3D4-7) LCD_INIT:MOV R2, #3INIT_LOOP:CLR RSMOV A, #30HLCALL WRITE_NIBBLELCALL DELAY_5MSDJNZ R2, INIT_LOOPCLR RSMOV A, #20HLCALL WRITE_NIBBLELCALL DELAY_5MSMOV A, #28HLCALL WRITE_CMDMOV A, #08HLCALL WRITE_CMDMOV A, #01HLCALL WRITE_CMDLCALL DELAY_5MSMOV A, #06HLCALL WRITE_CMDMOV A, #0CHLCALL WRITE_CMDRETWRITE_CMD:CLR RSSJMP WRITE_BYTEWRITE_DATA:SETB RSWRITE_BYTE:PUSH ACCANL A, #0F0HLCALL WRITE_N4POP ACCSWAP AANL A, #0F0HLCALL WRITE_N4RETWRITE_N4:RR A ; bits7-4 → bits6-3ANL A, #78H ; 保留 bits6-3ANL LCD_PORT, #87H ; 清 P1.6-3ORL LCD_PORT, ASETB ENNOPNOPCLR ENLCALL DELAY_200USRETWRITE_NIBBLE:RR AANL A, #78HANL LCD_PORT, #87HORL LCD_PO