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

📄 modem.lst

📁 em78806单片机的汇编源程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
   555                     	
   556 00456 143E          	JMP MAIN
   557                     		
   558 00457               _SEND_DTMF:
   559                     	
   560 00457 143E          	JMP MAIN
   561                     	
   562                     
   563                     
   564                     ;=======================806 send data to mcu===================		
   565 00458               _I2C_SEND_MCU:				;SEND DATA TO MCU
   566 00458 0E87          	JBS 0X07,CLOCK
   567 00459 143E          	JMP MAIN
   568 0045A 0EC7          	JBS 0X07,DATA
   569 0045B 143E          	JMP MAIN
   570                     
   571 0045C 0807          	BC 0X07,DSR					 ;require connect
   572 0045D 00E7          	CLR COUNTER_5MS
   573 0045E 0A2B          	BS I2C_FLAG,WAIT_BUSY
   574 0045F               _WAIT_BUSY_DOWN:
   575 0045F 0CAB          	JBC I2C_FLAG,mcu_over_time		;OVERTIME CONTROL
   576 00460 149A          	JMP _send_fail_con_again			  ;DELAY 30MS ,THEN CON AGAIN
   577                     
   578 00461 0C47          	JBC 0X07,BUSY
   579 00462 145F          	JMP _WAIT_BUSY_DOWN
   580 00463 082B          	BC I2C_FLAG,WAIT_BUSY
   581 00464 00E7          	CLR COUNTER_5MS
   582 00465 0A6B          	BS I2C_FLAG,WAIT_START
   583                     	
   584 00466               _WAIT_START:
   585 00466 0CAB          	JBC I2C_FLAG,MCU_OVER_TIME		;OVERTIME CONTROL
   586 00467 149A          	JMP _send_fail_con_again				;DELAY 30MS ,THEN CON AGAIN
   587                     	
   588 00468 0E87          	JBS 0X07,CLOCK
   589 00469 149A          	JMP _send_fail_con_again
   590 0046A 0CC7          	JBC 0X07,DATA
   591 0046B 1466          	JMP _WAIT_START
   592                     
   593 0046C 086B          	BC I2C_FLAG,WAIT_START			  
   594 0046D 00E7          	CLR COUNTER_5MS
   595 0046E 0011          	DISI							;WHEN COMU, DIABLE INT
   596                     	
   597                     
   598 0046F 1158          	CALL I2C_REC_BYTE
   599                     	
   600 00470 0414          	MOV A,I2C_TEMP
   601 00471 1A1F          	AND A,@0B00011111
   602 00472 0050          	MOV 0X10,A
   603 00473 0650          	RRC 0X10
   604 00474 1890          	MOV A,@0X90
   605 00475 004C          	MOV 0X0C,A
   606 00476 040D          	MOV A,0X0D
   607 00477 0310          	XOR A,0X10
   608 00478 0E83          	JBS 0X03,2
   609 00479 149A          	JMP _send_fail_con_again
   610 0047A 0E14          	JBS I2C_TEMP,0				;READ 1/WRITE 0
   611 0047B 149A          	JMP _send_fail_con_again
   612                     	
   613 0047C 1175          	CALL I2C_SEND_ACK
   614                     	
   615 0047D 0017          	IOR 0X07
   616 0047E 1AF7          	AND A,@0B11110111			 ;SET DATA AS OUTPUT
   617 0047F 0017          	IOR 0X07
   618 00480 00D3          	clr i2c_send_total
   619                     	
   620 00481               _I2C_SEND_LOOP:	
   621 00481 0413          	mov a,i2c_send_total
   622 00482 004C          	mov 0x0c,a
   623 00483 040D          	mov a,0x0d
   624 00484 0054          	mov i2c_temp,a
   625                     	
   626 00485 1183          	CALL I2C_SEND_BYTE
   627 00486 1192          	CALL I2C_REC_ACK
   628                     	
   629 00487 0553          	inc i2c_send_total
   630                     	
   631 00488 0413          	mov a,i2c_send_total				;IF NO ACK,DON'T REC END BIT
   632 00489 032A          	xor a,i2c_total
   633 0048A 0E83          	jbs 0x03,2
   634 0048B 1497          	jmp _send_not_complete
   635                     	
   636 0048C 0960          	BC STA_FLAG,IN_I2C_SEND			;send complete
   637 0048D 0807          	BC 0X07,DSR
   638 0048E 0017          	IOR 0X07
   639 0048F 190C          	OR A,@0B00001100
   640 00490 0017          	IOR 0X07
   641 00491 00D4          	clr i2c_temp
   642 00492 00D2          	clr i2c_bit_cont
   643 00493 00D3          	clr i2c_send_total
   644 00494 00EA          	clr i2c_total
   645 00495 0010          	eni	
   646 00496 143E          	jmp main
   647                     
   648 00497               _send_not_complete:
   649 00497 0EEB          	jbs i2c_flag,no_ack
   650 00498 1481          	jmp _i2c_send_loop
   651 00499 149A          	jmp _send_fail_con_again
   652                     	
   653                     
   654 0049A               _send_fail_con_again:
   655 0049A 00EB          	clr i2c_flag
   656 0049B 0807          	BC 0X07,DSR
   657 0049C 0017          	ior 0x07
   658 0049D 190C          	or a,@0b00001100
   659 0049E 0007          	iow 0x07
   660 0049F 0401          	mov a,0x01			 ;reset i2c_total
   661 004A0 004C          	mov 0x0c,a
   662 004A1 040D          	mov a,0x0d
   663 004A2 1F03          	add a,@0x03
   664 004A3 006A          	mov i2c_total,a
   665                     	;DELAY 30MS
   666 004A4 143E          	JMP MAIN
   667                     
   668                     
   669                     ;=====================806 receive mcu data==========================		
   670 004A5               _I2C_REC_MCU:
   671                     
   672 004A5 00E7          	CLR COUNTER_5MS					;wait start bit
   673 004A6 0A6B          	BS I2C_FLAG,WAIT_START
   674                     	
   675 004A7               _wait_start1:
   676 004A7 0CAB          	JBC I2C_FLAG,MCU_OVER_TIME		;OVERTIME CONTROL
   677 004A8 152F          	JMP _rec_fail
   678                     	
   679 004A9 0E87          	JBS 0X07,CLOCK
   680 004AA 152F          	JMP _rec_fail
   681 004AB 0CC7          	JBC 0X07,DATA
   682 004AC 14A7          	JMP _WAIT_START1
   683                     
   684 004AD 086B          	BC I2C_FLAG,WAIT_START			  
   685 004AE 00E7          	CLR COUNTER_5MS
   686 004AF 0011          	DISI			
   687                     	
   688 004B0 00D3          	clr i2c_rec_total
   689 004B1 00D5          	clr i2c_checksum
   690 004B2 00EA          	clr i2c_total
   691                     	
   692 004B3               _rec_byte_loop:				  ;rec loop start
   693 004B3 1158          	call i2c_rec_byte
   694                     	
   695 004B4 0D2B          	jbc i2c_flag,end_bit
   696 004B5 152F          	jmp _rec_fail				;rec end_bit , as fail
   697                     	
   698 004B6 0553          	inc i2c_rec_total			;inc
   699                     	
   700 004B7 0413          	mov a,i2c_rec_total
   701 004B8 1B01          	xor a,@0x01
   702 004B9 0C83          	jbc 0x03,2
   703 004BA 14C0          	jmp _rec_judge_add
   704                     	
   705                     ;	mov a,i2c_rec_total		;rec instruction
   706                     ;	xor a,@0x02
   707                     ;	jbc 0x03,2
   708                     ;	jmp _rec_instruction
   709                     	
   710 004BB 0413          	mov a,i2c_rec_total		;rec data total
   711 004BC 1B03          	xor a,@0x03
   712 004BD 0C83          	jbc 0x03,2
   713 004BE 14CD          	jmp _rec_length	
   714 004BF 14D6          	jmp _rec_save
   715                     	
   716 004C0               _rec_judge_add:
   717 004C0 0414          	mov a,i2c_temp				;check 806 add
   718 004C1 1A1F          	and a,@0B00011111	
   719 004C2 0050          	mov 0x10,a
   720 004C3 0650          	RRC 0X10
   721 004C4 1890          	MOV A,@0X90
   722 004C5 004C          	MOV 0X0C,A
   723 004C6 040D          	MOV A,0X0D
   724 004C7 0310          	XOR A,0X10
   725 004C8 0E83          	JBS 0X03,2
   726 004C9 152F          	JMP _rec_fail
   727 004CA 0C14          	jbc i2c_temp,0				;check "r /w" bit,READ 1/WRITE 0
   728 004CB 152F          	jmp _rec_fail
   729 004CC 14D6          	jmp _rec_save
   730                     	
   731 004CD               _rec_length:
   732 004CD 1840          	mov a,@0x40		;if instruction =0x05,no data length
   733 004CE 004C          	mov 0x0c,a
   734 004CF 040D          	mov a,0x0d
   735 004D0 1B05          	xor a,@0x05
   736 004D1 0C83          	jbc 0x03,2
   737 004D2 14EC          	jmp _rec_ok
   738                     	
   739 004D3 0414          	mov a,i2c_temp	;get all byte total
   740 004D4 1F03          	add a,@0x03
   741 004D5 006A          	mov i2c_total,a
   742                     	
   743 004D6               _rec_save:
   744 004D6 0193          	deca i2c_rec_total		;save to cid ram 0x40-0x7f
   745 004D7 1F40          	add a,@0x40
   746 004D8 004C          	mov 0x0c,a
   747 004D9 0414          	mov a,i2c_temp
   748 004DA 004D          	mov 0x0d,a
   749                     	
   750 004DB 0413          	mov a,i2c_rec_total		;judge if the last byte
   751 004DC 1D02          	sub a,@0x02
   752 004DD 0C03          	jbc 0x03,0
   753 004DE 14E8          	jmp _rec_checksum
   754                     
   755 004DF 0413          	mov a,i2c_rec_total		;last byte, judge checksum
   756 004E0 032A          	xor a,i2c_total
   757 004E1 0E83          	jbs 0x03,2
   758 004E2 14E8          	jmp _rec_checksum
   759 004E3 0414          	mov a,i2c_temp
   760 004E4 0315          	xor a,i2c_checksum
   761 004E5 0E83          	jbs 0x03,2
   762 004E6 152F          	jmp _rec_fail
   763 004E7 14EC          	jmp _rec_ok
   764                     	
   765 004E8               _rec_checksum:	
   766 004E8 0414          	mov a,i2c_temp
   767 004E9 03D5          	add i2c_checksum,a
   768                     	
   769 004EA               _rec_loop_ack:	
   770 004EA 1175          	CALL I2C_SEND_ACK
   771 004EB 14B3          	jmp _rec_byte_loop			;rec loop end
   772                     
   773                     
   774 004EC               _rec_ok:
   775 004EC 1175          	call i2c_send_ack
   776 004ED 08AB          	bc i2c_flag,mcu_over_time
   777 004EE 0807          	BC 0X07,DSR
   778 004EF 09A0          	bc sta_flag,in_i2c_rec
   779 004F0 0017          	ior 0x07
   780 004F1 190C          	or a,@0b00001100
   781 004F2 0007          	iow 0x07
   782                     	
   783 004F3 1842          	mov a,@0x42
   784 004F4 004C          	mov 0x0c,a
   785 004F5 040D          	mov a,0x0d
   786 004F6 0020          	tbl
   787 004F7 152E          	jmp _rec_command_err
   788 004F8 1500          	jmp _dtmf_send_reset
   789 004F9 150E          	jmp _fsk_send_reset
   790 004FA 152E          	jmp _rec_io_control
   791 004FB 152E          	jmp _rec_output
   792 004FC 152E          	jmp _rec_input_inquire
   793 004FD 152E          	jmp _on_off_control
   794 004FE 152E          	jmp _fsk_send_parameter
   795 004FF 152E          	jmp _not_use
   796                     
   797 00500               _dtmf_send_reset:			;send dtmf
   798 00500 1844          	mov a,@0x44
   799 00501 004C          	mov 0x0c,a
   800 00502 040D          	MOV A,0X0D
   801                     	
   802 00503 09C3          	BC 0X03,7				 ;IOCX PAGE 0
   803 00504 1136          	CALL DAIL_DTMF_HIGH	   ;high frequency ,high voltage
   804 00505 000E          	IOW 0X0E				  ;tone generator2 is 2DB higher than 1
   805                     
   806 00506 040D          	MOV A,0X0D
   807 00507 1147          	CALL DAIL_DTMF_LOW	   
   808 00508 000D          	IOW 0X0D				  ;low frequency, low voltage
   809                     	
   810 00509 1860          	MOV A,@0B01100000
   811 0050A 0243          	OR 0X03,A
   812                     	
   813                     ;	bs dtmf_flag,dtmf_send_start
   814 0050B 0B20          	bs sta_flag,in_send_dtmf
   815 0050C 09A0          	bc sta_flag,in_i2c_rec
   816 0050D 143E          	jmp main
   817                     
   818                     	
   819 0050E               _fsk_send_reset:					;send fsk
   820                     
   821 0050E 0CE0          	jbc sta_flag,in_send_fsk
   822 0050F 143E          	jmp main
   823                     
   824 00510 08C5          	BC 0X05,3	
   825 00511 08CA          	BC 0X0A,3
   826 00512 001F          	IOR 0X0F
   827 00513 1ABE          	AND A,@0B10111110				;disable fsk,tcc
   828 00514 000F          	IOW 0X0F
   829                     ;
   830 00515 1844          	MOV A,@0X44			  		;SET START VALUE
   831 00516 004C          	mov 0x0c,a

⌨️ 快捷键说明

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