⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receive.asm

📁 俺写的电话遥控系统的从机端完整源代码。 老大
💻 ASM
字号:
		ACT_REG EQU 20H
		cpufree EQU 01H
		cut_call_sever_act EQU 20H.0
		answer_call_sever_act EQU 20H.1
		serial_port_sever_act EQU 20H.2
		password_sever_act EQU 20H.3
		bell_time_act EQU 20H.4
		bell_scan_act EQU 20H.5
		press_key_time_act EQU 20H.6
		press_key_scan_act EQU 20H.7

		password_sever_enabled EQU 21H.0
		bell_time_enabled EQU 21H.1
		bell_scan_enabled EQU 21H.2
		press_key_time_enabled EQU 21H.3
		press_key_scan_enabled EQU 21H.4
		one_sec_enabled EQU 21H.5
		half_sec_enabled EQU 21H.6
		one_of_ten_sec_enabled EQU 21H.7


		cut_call_sever_enabled EQU 22H.1
		serial_port_sever_enabled EQU 22H.2
		answer_call_sever_enabled EQU 22H.3
		key_value_enabled EQU 22H.4
		bell_time_clear_enabled EQU 22H.5
		key_time_clear_enabled EQU 22H.6
		enabled_reg1 EQU 21H
		enabled_reg2 EQU 22H


		temp_bell_scan_result EQU 23H.3
		bell_scan_reg EQU 23H.2
		temp_key_scan_result EQU 23H.4
		scan_reg EQU 23H
		lasttime_bell_scan_result EQU 24H.0
		nonce_bell_scan_result EQU 24H.1

		nonce_key_scan_result EQU 24H.4
		lasttime_key_scan_result EQU 24H.5


		WORKREG_begin EQU 43H
		WORKREG_END EQU 4DH
		time_50ms EQU 26H.0
		time_100ms EQU 06H
		time_500ms EQU 07H


 
		bell_port EQU P0.4
		bell_scan_count EQU 47H
		bell_time EQU 48H


		key_act_port EQU P2.4
		read_key_enabled_port EQU P2.5
		keyboard_port EQU P0
		key_value EQU 49H
		key_time EQU 4AH
		CANCEL_KEY EQU 0EH
		OK_KEY EQU 0FH

		passwordkey EQU 4BH
		enter_pasword_key_count EQU 4CH
		real_pasword_unit EQU 4FH
		real_password_begin_reg EQU 3BH
		password_begin_reg EQU 13H
		enter_pasword_wrong_time EQU 4EH
		controlkey EQU 45H
		need_control_port EQU 46H
		serial_port_state EQU 42H
		answercall_port EQU P2.6
		CPU_working EQU P3.7
		control_port EQU P1			;暂时定为P1
		control_en_port EQU P3.4
		
		desplay_access EQU 40H
		desplay_ad EQU 41H
		DIN EQU P1.0
		CLK EQU P3.6
		LOAD EQU P1.1
		desplay_light EQU 6DH
		desplay_reg1 EQU 18H
		desplay_reg8 EQU 1FH
		desplay_regEND EQU 20H
		last_desplay_reg1 EQU 33H
		last_desplay_reg8 EQU 3AH

		systime_ad EQU 02H
		min EQU 03H
		hour EQU 04H
		one_min_enabled EQU 22H.0

		press_key_value EQU 62H
		keyboard_value_enabled EQU 25H.0
		scan_key_result_reg1 EQU 63H
		scan_key_result_reg2 EQU 64H
		scan_key_result_reg3 EQU 65H
		scan_key_result_reg4 EQU 66H
		press_port EQU P0

		scan_presskey_act EQU 25H.1
		scan_presskey_enabled EQU 25H.2
		
		set_state_value EQU 67H

		change_class_key EQU 02H
		select_key EQU 04H
		set_key EQU 08H
		select_port_key EQU 0CH
		set_port_state EQU 10H
		set_open_port_state EQU 20H
		set_close_port_state EQU 30H
		set_systime_state EQU 40H
		set_deslpay_state EQU 50H
		set_password_state EQU 60H
		desplay_key_value_state EQU 70H
		DESPLAY_SEVER_ENABLED EQU 26H.7
		NOW_RECORD_SOUND_stat EQU 80H
		RESET_ALL_STATE EQU 90H
		DESPLAY_IF_CALL_STATE EQU 90H
		if_FLASH EQU 24H.3

		open_port_time_ad EQU 70H
		off_port_time_ad EQU 50H
		port_time_enabled_state EQU 6AH
		L_now_set_port EQU 69H
		H_now_operation_port EQU 69H
		time_open_port_state EQU 6BH
		time_close_port_state EQU 6CH

		sound_enable_port EQU p2.3
		time_playorrecord_enabled EQU 24H.2
		time_playorrecord_CLR_enabled EQU 25H.5
		sound_record_enabled EQU 25H.4
		time_playorrecord_reg EQU 6EH
		sound_playrec_len EQU 6FH
		begin_playrec_reg EQU 44H
		sound_play_enabled EQU 25H.3

		reset_play_port EQU p2.1
		need_record_reg EQU 60H
		need_record_LEN EQU 61H
		addport EQU P2.2
		time_press_key EQU 68H
		time_press_key_enabled EQU 25H.6
		time_press_key_clear_enabled EQU 25H.7
		USEEDREG_END EQU 80H

		CS EQU P2.0
		SCK BIT P1.2
		SO BIT P1.3
		SI BIT P1.4

		TXEN EQU P3.2
		send_begin_reg EQU 70H
		send_count EQU 75H
		RECEIVE_BEGIN_REG EQU 50H
		send_data_act EQU 26H.1
		COLTROL_PORT_CODE_ID EQU 10H
		data_sending EQU 26H.3
		send_data_time_act EQU 26H.4
		send_data_time_clear_enabled EQU 26H.5
		SEND_TIME_REG EQU 76H
		RECEIVE_data_act EQU 26H.2
		ENABLED_RECEIVE_NEXT_DATA EQU 26H.6

        ORG 0000H
        LJMP MAIN		;从机主程序入口地址
        ORG 0023H
        LJMP COMMUNICATE		;串行口中断入口地址


	ORG 0040H
MAIN:	MOV P1,#00H
	MOV serial_port_state,#00H
	ACALL control_port_CODE
	MOV P2,#00H			;开始初始化
	MOV P0,#00H
	CLR RS0				;清RAM
	CLR RS1
	MOV R0,#00H
RAM_CLR:MOV @R0,#00H
	INC R0
	CJNE R0,#USEEDREG_END,RAM_CLR
	MOV SP,#26H
	CLR TXEN
	SETB CPU_working  
	MOV SCON,#0F0H		;串行口方式2,发送,禁收
	MOV A,TMOD
	ANL A,#0FH
	ORL A,#20H
	MOV TMOD,A
	MOV TH1,#0D9H
	MOV TL1,#0D9H
	CLR RS1
	SETB RS0
	SETB SM2
	SETB EA			;CPU开中断
	SETB TR1
	SETB ES 		;串行口开中断

WAIE_DATA:
	JNB RECEIVE_data_act,$
	MOV R0,#RECEIVE_BEGIN_REG
	ACALL CHECK_SUM_CODE
	CJNE A,RECEIVE_BEGIN_REG+4,END_WAIE_DATA
	CPL CPU_working		;cpu工作指示灯
	LCALL LIST_transfer_CODE
END_WAIE_DATA:
	SETB SM2
	CLR RECEIVE_data_act
        SJMP WAIE_DATA		;等待中断




;串行口中断服务程序
COMMUNICATE:
	PUSH ACC
	PUSH PSW
	CLR RS0
	CLR RS0
	CLR RI
	JB RECEIVE_data_act,END_COMMUNICATE_INT;上个数据是否已取走
	JNB RB8,GOON_COMMUNICATE_INT	;取RB8(信息特征位)
	SETB SM2
	MOV send_count,#00H
	MOV A,SBUF
	CJNE A,#85H,END_COMMUNICATE_INT	;判断是否为己方地址
	CLR SM2				;清SM2,为后面接受数据帧作准备
GOON_COMMUNICATE_INT:
	MOV R0,#RECEIVE_BEGIN_REG
	MOV A,send_count
	ANL A,#0FH
	ADD A,R0
	MOV R0,A
	MOV A,SBUF		;取接受信息
	MOV @R0,A
	MOV A,send_count
	ANL A,#0FH
	INC A
	CJNE A,#05H,CON_RECEIVE
	MOV A,#00H
	SETB SM2
	SETB RECEIVE_data_act
CON_RECEIVE:
	ANL send_count,#0F0H
	ORL send_count,A
END_COMMUNICATE_INT:
	POP PSW
	POP ACC
	RETI			;中断返回

CHECK_SUM_CODE:
	MOV A,@R0
	INC R0
	XRL A,@R0
	INC R0
	XRL A,@R0
	INC R0
	XRL A,@R0
	RET

LIST_transfer_CODE:
	MOV A,RECEIVE_BEGIN_REG+1
	ANL A,#0F0H
	CJNE A,#COLTROL_PORT_CODE_ID,JUDGE_OTHER_ID
	ACALL COLTROL_PORT_CODE
	RET
JUDGE_OTHER_ID:
	RET

COLTROL_PORT_CODE:
	MOV A,RECEIVE_BEGIN_REG+2
	JZ GOON_COLTROL_PORT_CODE
GOON_COLTROL_PORT_CODE:
	MOV A,RECEIVE_BEGIN_REG+3
	MOV serial_port_state,A
	ACALL control_port_CODE
END_COLTROL_PORT_CODE:
	RET

control_port_CODE:			;对74LS373操作
		MOV control_port,serial_port_state
		SETB control_en_port
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		CLR control_en_port
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		RET

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -