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

📄 taxi-asm.asm

📁 一个成熟的TAXI PHONE 源代码
💻 ASM
字号:
	;TAXI PHONE for PIC508A CHIP


		;'508A Files  
			;07h 
			;08h 
			;09h
			;0Ah 
			;0Bh 
			;0Ch 
			;0Dh 
			;0Eh loop file
			;0Fh 
			;10h jump file for tables
			;11h 
			;12h Count file
			;13h Carrier DTMF			
			;14h Low tone 
			;15h decrementable low tone
			;16h High tone 
			;17h decrementable high tone
			;18h 
			;19h 
			;1Ah delay routines
			;1Bh delay routines
			;1Ch delay routines
			;1Dh 
			;1Eh
			;1Fh 
			


SetUp	MOVLW 08	;Put 0000 1000 into W
	TRIS 06	 	;Make GP3 input		
	CLRF 06         ;Clear port 6 of any junk	
	BSF 01h,0	;Prescaler bit0
	BSF 01h,1	;Prescaler bit1
	BSF 01h,2	;Prescaler bit2  =  WDT x 128
	BSF 01h,3	;Prescaler assigned to WDT		

StartUp	GOTO Main1


		;Table 1 for storing phone number


Table1	ADDWF 02,1	;File 02 = Low bits of program counter
	RETLW 0Ah	;0	
	RETLW 02h 	; 
	RETLW 01h 	;
	RETLW 01h 	;
	RETLW 01h 	;
	RETLW 02h 	;
	RETLW 01h 	;
	RETLW 01h 	;
	RETLW 02h 	;  
	RETLW 02h 	;
	RETLW 0Eh 	;E = End of number
	
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
	RETLW 0FFh
		

	;Table2 DTMF Low tones 

Table2	ADDWF 02,1	;File 02 = low bits of program counter
	NOP
	RETLW 075h 	;1 
	RETLW 075h 	;2
	RETLW 075h 	;3
	RETLW 06Bh 	;4
	RETLW 06Bh 	;5
	RETLW 06Bh 	;6
	RETLW 060h 	;7
	RETLW 060h 	;8  
	RETLW 060h 	;9
	RETLW 057h 	;0
	
	
	;Table3 DTMF HIGH tones 

Table3	ADDWF 02,1	;File 02 = Low bits of program counter
	NOP
	RETLW 044h 	;1 
	RETLW 03Dh 	;2
	RETLW 037h 	;3
	RETLW 044h 	;4
	RETLW 03Dh 	;5
	RETLW 037h 	;6
	RETLW 044h 	;7
	RETLW 03Dh 	;8  
	RETLW 038h 	;9
	RETLW 03Dh 	;0

	;Short delay between tone approx 50mS

Del1	CLRWDT
	MOVLW 50h	;loops
	MOVWF 1B	;
Del1A	DECFSZ 1A,1	;Will produce 256 decrements
	GOTO Del1A
	DECFSZ 1B,1	;decrements file 1B
	GOTO Del1A
	RETLW 00


	;0.7sec Delay  

Del2	CLRWDT
	NOP	;NOP's to pad out the delay routine to 
	NOP	;create more than 655,000uS delay
	NOP	;(approx 0.7sec delay)
	NOP
	NOP
	NOP
	NOP
	DECFSZ 1A,1	;After one pass, each file will be
	GOTO Del2	;256 and will produce the longest
	DECFSZ 1B,1	;delay-time.
	GOTO Del2
	RETLW 00

	
	;Dial1 dials the DTMF phone number
	;13h = carrier file
	;14h = low tone
	;15h = decrementable low tone
	;16h = high tone
	;17h = decrementable high tone
	

Dial1	MOVF 10h,0	;Put 10h into W
	CALL Table1
	MOVWF 13h	;Put W into 13h - carrier
	MOVLW 0E	;Look for E - end of number
	XORWF 13h,0	;Is 13h = E?
	BTFSC 03,2
	GOTO Main4
	MOVF 13h,0	;File 13h will be 1,2,3 ..0A
	CALL Table2	;Get low-tone value
	MOVWF 14h	;Put low-tone into 14h
	MOVWF 15h	;Decrementable low-tone
	MOVF 13h,0
	CALL Table3
	MOVWF 16h	;Put high-tone into 16h
	MOVWF 17h	;Decrementable high-tone
	CALL DTMF1
Dial2	CALL Del1	;Short delay before next
	CALL Del1	;       digit
	INCF 10h,1
	GOTO Dial1

	


DTMF1	MOVLW 0A0h	; loops of tone 
	MOVWF 11h	;   to produce 1/10th sec
DTMF2	DECFSZ 17h,1	;Decrement high-tone file
	GOTO DTMF3
	MOVLW 01	;To toggle GP0	
	XORWF 06,1	;Toggle GP0
	MOVF 16h,0	;To re-load high-tone file
	MOVWF 17h	;Re-load high-tone file
DTMF3	DECFSZ 15h,1	;Decrement low-tone file
	GOTO DTMF2
	MOVLW 02	;To toggle GP1
	XORWF 06,1	;Toggle GP1
	MOVF 14h,0	;To re-load low-tone file
	MOVWF 15h	;Re-load low-tone file
	DECFSZ 11h,1	;Decrement loops file
	GOTO DTMF2	
	GOTO Dial2

	
	;Main
	

Main1	CALL Del2	;0.7sec delay
	CALL Del2	;0.7sec delay	
	CLRF 10h	;Jump value for Table1
Main2	MOVF 10h,0	;Look for NOPs in Table1
	CALL Table1	;  so chip can be re-burnt
	XORLW 00h
	BTFSS 03,2
	GOTO Main3
	INCF 10h,1
	GOTO Main2
Main3	BTFSS 06,3	;Is auto-dial Sw closed? = GP3=LOW
	GOTO Main4	;Yes. Auto Sw closed = GP3 = LOW
Sw	CALL Del2	;No. Wait for Sw to be pressed	
	BTFSC 06,3	;Is switch pressed?
	GOTO Sw		;No. Loop here until Sw pressed
Main4	GOTO Dial1	;Yes.
Main5	NOP		;Loop forever after dialing
	CLRWDT		;WDT will turn project on 
	GOTO Main5	;   when power is applied
	




	


	END
	





	
			
	

		

	
	

⌨️ 快捷键说明

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