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

📄 avr8100bluetooth.asm

📁 通过篮牙将手机号码显示在IPOD机器上
💻 ASM
📖 第 1 页 / 共 3 页
字号:
  	MOV		ZH, R0			;GET FONT ADRESS
fixrom_to_ram:
  	CLC
  	ADD		ZL, R7
  	ADC		ZH, R6			;FIGURE2 ADRESS + OFFSET
 
  	CLC
  	ROL		ZL
  	ROL		ZH

  	ORI		ZL,0B00000001
  	LPM	
  	ST		X+, R0
  	
  	ANDI	ZL,0B11111110
  	LPM	
  	ST		X+, R0

  	ADIW	ZL, 2

  	ORI		ZL,0B00000001
  	LPM	
  	ST		X+, R0
  	
  	ANDI	ZL,0B11111110
  	LPM	
  	ST	X+, R0
  	ret

;=======================================================
/*
============================================================================
;================================================================================================
;DISP FM FREQUENCY, 128 * 20pixels, 16*8=128;4*8=32
;================================================================================================*/
tranphonecodedata_to_ram:
			ldi		r16,8
			sts		count,r16
			lds		r19,phonecodelen
			cpi		r19,8
			brcs		tranphonecodedata_to_ram_1
			subi		r19,8
			mov		r4,r19		
			rjmp		tranphonecodedata_to_ram_2
tranphonecodedata_to_ram_1:	
			ldi		r19,0
			mov		r4,r19
tranphonecodedata_to_ram_2:			
  			LDI		XL, LOW(DISP_DATA_RAM_START)
  			LDI		XH, HIGH(DISP_DATA_RAM_START)
  			LDI		R16, 0
  			MOV		R6, R16									;R6 = 0
  			MOV		R7, R16									;R7 = offset of the fOUR figures
  
  			LDI		R16, 24
  			MOV		R8, R16									;18 LINE
  			ldi		yl,low(phonecode)
			ldi		yh,high(phonecode)	
  			
tranphonecodedata_to_ram_3:
			cpi		r19,0
			brne		tranphonecodedata_to_ram_4
			rjmp		tranblanedata_to_ram
tranphonecodedata_to_ram_4:
			ld		r3,y+
  			LDI		ZL,LOW(FONT_TAB)
  			LDI		ZH,HIGH(FONT_TAB)
  			rcall		rom_to_ram
  			lds		r16,count
  			dec		r16
  			sts		count,r16
  			dec		r19
  			rjmp		tranphonecodedata_to_ram_3
tranblanedata_to_ram:
			
			ST		X+, R6
  		    	ST		X+, R6
			ST		X+, R6
			ST		X+, R6
  			lds		r16,count
  			dec		r16
  			sts		count,r16
  			cpi		r16,0
  			brne		tranblanedata_to_ram
tranphonecodedata_to_ram_6:
			ldi		yl,low(phonecode)
			ldi		yh,high(phonecode)
  			DEC		R8
  			BREQ		tranphonecodedata_to_ram_7
  			INC		R7
  			INC		R7
            		ldi		r16,8    
			sts		count,r16
			mov		r19,r4

  			RJMP		tranphonecodedata_to_ram_3
tranphonecodedata_to_ram_7:						;TWO FRAMES DATA SENT TO RAM COMPLETED	
					
				ret
				
;;-----------------------------------------------------------------
;;DISP FM FREQUENCY, 128 * 20pixels, 16*8=128;4*8=32   第二次
;;================================================================================================
tranphonecodedata_to_ram1:
			lds		r19,phonecodelen
			cpi		r19,8
			brcs		tranphonecodedata_to_ram1_1
			ldi		r19,8
			mov		r4,r19
tranphonecodedata_to_ram1_1:	
			mov		r4,r19		
  			LDI		XL, LOW(DISP_DATA_RAM_START)
  			LDI		XH, HIGH(DISP_DATA_RAM_START)
  			LDI		R16, 0
  			MOV		R6, R16									;R6 = 0
  			MOV		R7, R16									;R7 = offset of the fOUR figures
  
  			LDI		R16, 24
  			MOV		R8, R16	
  			ldi		r16,8
  			sts		count,r16
 ;-----------------------------------------------------------------------------
tranphonecodedata_to_ram1_loop:
 			ldi		yl,low(phonecode)
			ldi		yh,high(phonecode)
  			lds		r16,phonecodelen
  			cpi		r16,8
  			brcs		tranphonecodedata_to_ram1_2	
			subi		r16,8
			clc
			add		yl,r16	
			adc		yh,r6	
tranphonecodedata_to_ram1_2:						
			cpi		r19,0
			brne		tranphonecodedata_to_ram1_3
			rjmp		tranblanedata_to_ram1
tranphonecodedata_to_ram1_3:
			ld		r3,y+
  			LDI		ZL,LOW(FONT_TAB)
  			LDI		ZH,HIGH(FONT_TAB)
  			rcall	rom_to_ram
  			lds		r16,count
  			dec		r16
  			sts		count,r16
  			dec		r19
  			rjmp		tranphonecodedata_to_ram1_2
tranblanedata_to_ram1:
			lds		r16,count
			cpi		r16,0
			brne		tranblanedata_to_ram1_1
			rjmp		tranphonecodedata_to_ram1_4
tranblanedata_to_ram1_1:
			
  			ST		X+, R6
  		        ST		X+, R6
			ST		X+, R6
			ST		X+, R6
  			lds		r16,count
  			dec		r16
  			sts		count,r16
			rjmp		tranblanedata_to_ram1
tranphonecodedata_to_ram1_4:
  			DEC		R8
  			BREQ		tranphonecodedata_to_ram1_5
  			INC		R7
  			INC		R7
  			ldi		r16,8
  			sts		count,r16
  			mov		r19,r4
  			RJMP		tranphonecodedata_to_ram1_loop
tranphonecodedata_to_ram1_5:						;TWO FRAMES DATA SENT TO RAM COMPLETED		
				ret
/*
============================================================================
The display data is temporarily stored in the RAM, from $160 to $45F.

==============================================================================

*/
;*************************************************************************************************************************
disfrequency:						;SEND SetDisplay_Descriptor INSTRUCTION
			clt
			bld	r10,1		;set exit display status
			LDI		R17, $Ad
  			LDI		R20, 10
  			LDI		ZL,LOW(Instruction_SetDisplay_Descriptor)
  			LDI		ZH,HIGH(Instruction_SetDisplay_Descriptor)		
  			rCALL	Uart_TX
  			rcall	DISP_FRAM								;SEND ONE FRAM DISPLAY DATA
  			NEG		R17										;CHECK SUM
  			mov		R16, r17
  			rcall	Uart_TX_ONE_BYTE						;SEND SetDisplay_Descriptor COMPLETED	
;--------------------------------------------------------------------------------------------
			LDI		R17, $Ac
  			LDI		R20, 5           ;DATA1, THE SECOND FRAM DISPLAY DATA
  			LDI		ZL,LOW(figurtab)
  			LDI		ZH,HIGH(figurtab)		
  			rcall	Uart_TX
  			rcall	DISP_FRAM1								;SEND THE SECOND FRAM DISPLAY DATA

  	  		NEG		R17										;CHECK SUM
  			MOV		R16, R17
  			rcall	Uart_TX_ONE_BYTE						;SEND SetDisplay_Data COMPLETED	
			ret
;========================================================================================================  display phone code
;--------------------------------------------------------------------------------------------------  first
disphone:						;SEND SetDisplay_Descriptor INSTRUCTION
			rcall	  	tranphonecodedata_to_ram
			LDI		R17, $Ad
			clt
			bld	r10,1		;set into display status
  			LDI		R20, 10
  			LDI		ZL,LOW(displayphonefirsttab)
  			LDI		ZH,HIGH(displayphonefirsttab)		
  			rcall		Uart_TX
  			rcall		DISP_phone_firstfram								;SEND ONE FRAM DISPLAY DATA
  			NEG		R17										;CHECK SUM
  			mov		R16, r17
  			rcall	Uart_TX_ONE_BYTE	
  			
;---------------------------------------------------------------------------------------  second
			LDI		R17, $Ac
  			LDI		R20, 5          
  			LDI		ZL,LOW(displayphonesecondtab)
  			LDI		ZH,HIGH(displayphonesecondtab)		
  			rcall		Uart_TX
  			rcall		DISP_phone_firstfram1								;SEND THE SECOND FRAM DISPLAY DATA

  			NEG		R17										;CHECK SUM
  			MOV		R16, R17
  			rcall	Uart_TX_ONE_BYTE
  						
;--------------------------------------------------------------------------------------------third
			rcall	  	tranphonecodedata_to_ram1					
			LDI		R17, $Ac
  			LDI		R20, 5          
  			LDI		ZL,LOW(displayphonethirdtab)
  			LDI		ZH,HIGH(displayphonethirdtab)		
  			rcall		Uart_TX
  			rcall		DISP_phone_firstfram								;SEND THE SECOND FRAM DISPLAY DATA

  			NEG		R17										;CHECK SUM
  			MOV		R16, R17
  			rcall	Uart_TX_ONE_BYTE	
  			
;-------------------------------------------------------------------------------------------- four					
			LDI		R17, $Ac
  			LDI		R20, 5          
  			LDI		ZL,LOW(displayphonefourtab)
  			LDI		ZH,HIGH(displayphonefourtab)		
  			rcall		Uart_TX
  			rcall		DISP_phone_firstfram1								;SEND THE SECOND FRAM DISPLAY DATA
  			NEG		R17										;CHECK SUM
  			MOV		R16, R17
  			rcall	Uart_TX_ONE_BYTE							
			ret

;******************************************************************************

			;-delay use r23, r24 ,r25
 ;------------------------------------------------------------
 ;----------------------------------------------------
delay3s:
			LDI		R23,150
			rjmp		delay_ms 
delay1s:
			LDI		R23,50
			rjmp		delay_ms
delay_500ms:
			LDI		R23,25
			rjmp		delay_ms
delay_200ms:
			LDI		R23,10
			rjmp		delay_ms
delay_100ms:
			LDI		R23,5
			rjmp		delay_ms
Delay_40ms:
			LDI		R23,2
			rjmp		delay_ms
Delay_20ms:
  			LDI		R23,1
  			rjmp		delay_ms
delay_ms:
  			LDI		R24,240
delay_ms_1:
			ldi		r25,200
delay_ms_2:
  			DEC		R25
  			BRNE		delay_ms_2
  			DEC		R24
  			BRNE		delay_ms_1
  			dec		r23
  			brne		delay_ms
  			RET 
;----------------------------------------------------
delay3skey:
	clt
	bld	r10,0
	ldi	r22,3
	ldi	r23,200
delay3skey_1:
	ldi	r24,200
delay3skey_2:
	sbis	pinc,upkey
	rjmp	exiedelay3key
	sbis	pinc,downkey
	rjmp	exiedelay3key
	ldi	r25,200
delay3skey_3:
	dec	r25
	brne	delay3skey_3
	dec	r24
	brne	delay3skey_2
	dec	r23
	brne	delay3skey_1
	
	set		;set t
	bld	r10,0	;set status
	ret
exiedelay3key:				; 10 time 防KEY 抖
	dec	r22
	brne	delay3skey_2
	ret
;==========================================================
banduangphoneexit:
	clt
	bld	r10,0
;	ldi	r22,3
	ldi	r23,200
banduangphoneexit_1:
	ldi	r24,200
banduangphoneexit_2:
	ldi	r25,200
	sbis	pind,0
	rjmp	exitbanduangphoneexit
banduangphoneexit_3:
	dec	r25
	brne	banduangphoneexit_3
	dec	r24
	brne	banduangphoneexit_2
	dec	r23
	brne	banduangphoneexit_1
	
	set		;set t
	bld	r10,0	;set status
	ret
exitbanduangphoneexit:				; 10 time 防KEY 抖
	ret
;===========================================================
;---------------------------------------------------------	
dly:
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		ret
;------------------------------------------------------------------------
;*********************************************************************************************************	
;-------------------------------------------------------------------

Uart_TX_ONE_BYTE:										;SENDING-DATA IN R16
  			SBIS	UCSRA,UDRE
  			RJMP	Uart_TX_ONE_BYTE
  			OUT		UDR,R16
  			RET

Uart_RX_ONE_BYTE:
  			SBIS	UCSRA,RXC
  			RJMP	Uart_RX_ONE_BYTE
  			IN		R16, UDR
  			RET

Uart_TX:												;THE LENGTH IS IN R20, THE DATA IS IN FLASH ADRESSED BY ZL,ZH, check_sum -> R17									;FF+55+AC=$200
Uart_TX1:
  			CLC
  			ROL		ZL
  			ROL		ZH
Uart_TX2:
  			ORI		ZL,0B00000001
  			LPM		R16,Z
  			ADD		R17,R16
  
  			rcall	Uart_TX_ONE_BYTE

  			ANDI	ZL,0B11111110
  			LPM		R16,Z
  			ADD		R17,R16
  			rcall	Uart_TX_ONE_BYTE

  			ADIW	ZL, 2
  			DEC		R20
  			BRNE	Uart_TX2
  
  			RET	

;====================================================
pause:
		 LDI		ZL,LOW(pausetab)
         LDI		ZH,HIGH(pausetab)
		 rjmp		LINK_iPOD13
phone_link:
		 LDI		ZL,LOW(phonelinktab)
                 LDI		ZH,HIGH(phonelinktab)
		 rjmp		LINK_iPOD13

exitexmodel:
	SET		
	BLD		R10,1
	LDI		ZL,LOW(exitexmodeltab)
	LDI		ZH,HIGH(exitexmodeltab)
	rjmp		LINK_iPOD13	
playresume:
	          LDI		ZL,LOW(playresumetab)
                  LDI		ZH,HIGH(playresumetab)
                  rjmp		LINK_iPOD13
	
LINK_iPOD:
                  LDI		ZL,LOW(exttab)
                  LDI		ZH,HIGH(exttab)
                  rjmp		LINK_iPOD13
LINK_iPOD1:
		 LDI		ZL,LOW(exttab1)
		 LDI		ZH,HIGH(exttab1)
		 rjmp		LINK_iPOD13
LINK_iPOD13:		
                 CLC
  		ROL		ZL
  		ROL		ZH
LINK_iPOD_1:
		ORI		ZL,0B00000001
  		LPM		R16,Z
  		cpi		r16,0x88
  		brne		LINK_iPOD_2
		nop
		;SEI
  		ret
 LINK_iPOD_2:
 		cpi		r16,0x99
 		brne		 LINK_iPOD_3
 		rcall		delay_20ms
 		rjmp		 LINK_iPOD_4
 LINK_iPOD_3:
  		rcall	Uart_TX_ONE_BYTE
LINK_iPOD_4:
  		ANDI	ZL,0B11111110
  		LPM		R16,Z
  		cpi		r16,0x88
  		brne		LINK_iPOD_5
		nop
		;SEI
  		ret
 LINK_iPOD_5:
 		cpi		r16,0x99
 		brne		 LINK_iPOD_6
 		rcall		delay_20ms
 		rjmp		 LINK_iPOD_7
 LINK_iPOD_6:
  		rcall	Uart_TX_ONE_BYTE
LINK_iPOD_7:
  		ADIW	ZL, 2
  		rjmp	LINK_iPOD_1
  		
;================================================================================ frequency

DISP_FRAM:
  			LDI		XL, LOW(DISP_DATA_RAM_START)
  			LDI		XH, HIGH(DISP_DATA_RAM_START)
DISP_FRAM_1:  
  			LD		R16, X+  
  			ADD		R17, R16
  			rcall	Uart_TX_ONE_BYTE

  			CPI		XL, LOW(DISP_DATA_RAM_START1)
  			BRNE  	DISP_FRAM_1
  			CPI		XH, HIGH(DISP_DATA_RAM_START1)
  			BRNE	DISP_FRAM_1

  			RET
  			
;-------------------------------------------------
DISP_FRAM1:
  			LDI		XL, LOW(DISP_DATA_RAM_START1)
  			LDI		XH, HIGH(DISP_DATA_RAM_START1)
DISP_FRAM1_1:  
  			LD		R16, X+  
  			ADD		R17, R16
  			rcall	Uart_TX_ONE_BYTE

  			CPI		XL, LOW(DISP_DATA_RAM_END)
  			BRNE  	DISP_FRAM1_1
  			CPI		XH, HIGH(DISP_DATA_RAM_END)
  			BRNE  	DISP_FRAM1_1

  			RET
  			
;-----------------------------------------------------------------------phone



DISP_phone_firstfram:
  			LDI		XL, LOW(DISP_DATA_RAM_START)
  			LDI		XH, HIGH(DISP_DATA_RAM_START)
DISP_phone_firstfram_1:  
  			LD		R16, X+  
  			ADD		R17, R16
  			rcall	Uart_TX_ONE_BYTE

  			CPI		XL, LOW(disp_phone_ram_start1)
  			BRNE  		DISP_phone_firstfram_1
  			CPI		XH, HIGH(disp_phone_ram_start1)
  			BRNE	DISP_phone_firstfram_1

  			RET

DISP_phone_firstfram1:
  			LDI		XL, LOW(disp_phone_ram_start1)
  			LDI		XH, HIGH(disp_phone_ram_start1)
DISP_phone_firstfram1_1:  
  			LD		R16, X+  
  			ADD		R17, R16
  			rcall	Uart_TX_ONE_BYTE

  			CPI		XL, LOW(disp_phone_ram_END)
  			BRNE  		dISP_phone_firstfram1_1
  			CPI		XH, HIGH(disp_phone_ram_END)
  			BRNE  		dISP_phone_firstfram1_1
  			RET

⌨️ 快捷键说明

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