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

📄 shibiema.asm

📁 智能识别系统程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		BSF		FANGYA,0
			
		GOTO	BACKSHI2

BACKSHI2_BUDING
	
BACKSHI2
		RETURN

;=====================================
		;一区关的情况下检测2区有无关闭,然后做出判断
;=====================================
;SHUNXU_CLOSE1
;===============================
		;BTFSS	LAG_FA,2
		;GOTO	OPEN_2
		;BCF		LAG_FA,7	;2	XIAN CLOSE
		;RETURN
		
;OPEN_2						
	;	BSF		LAG_FA,7	;2 HOU CLOSE
		;RETURN


;======================================================
;=====================================
		;2区关的情况下检测1区有无关闭,然后做出判断
;=====================================
;SHUNXU_CLOSE2
;===============================
		;BTFSS	LAG_FA,1
		;GOTO	OPEN_1
		;BSF		LAG_FA,7	;2 	HOU CLOSE
		;RETURN
		
;OPEN_1
		;BCF		LAG_FA,7	;2  XIAN CLOSE
		;RETURN
;##################################&&&&&&&&&&&$$$$$$$$$@@@@@@@@@@@@@@@!!!!!!!!!!!!!	

	

CHENGJI
		MOVLW	.51
		SUBWF	ADRES,1
		BTFSS	STATUS,0
		CLRF	ADRES
		CLRF	H_B
		CLRF	L_B
		
		MOVLW	8
		MOVWF	BIT
		MOVF	CHUNG,W
		;MOVLW	.99
		BCF	STATUS,0
CLOOP	
		
		
		
		RRF	ADRES	
		BTFSC	STATUS,0
		ADDWF	H_B
		RRF		H_B
		RRF		L_B
		DECFSZ	BIT
		GOTO	CLOOP
	
		
CHU		

		MOVLW	00H
		MOVWF	CHUH
		MOVLW	.204
		MOVWF	CHUL
CHUZI		CLRF	SHANGH
		CLRF	SHANGL
		
		CALL	DIVYIWEI
		CLRF	YUH
		CLRF	YUL
		
DIVLOOP		BCF		STATUS,0
		RLF		P1L
		RLF		P1H
		RLF		YUL
		RLF		YUH
		MOVF	CHUH,W
		SUBWF	YUH	,W
		BTFSS	STATUS,2
		GOTO	ASP
		MOVF	CHUL,W
		SUBWF	YUL,W
		
ASP		BTFSS	STATUS,0
		GOTO	PUP
		MOVF	CHUL,W
		SUBWF	YUL
		BTFSS	STATUS,0
		DECF	YUH
		MOVF	CHUH,W
		SUBWF	YUH
		BSF		STATUS,0
PUP		RLF		L_B
		RLF		H_B
		DECFSZ	BIT
		GOTO	DIVLOOP
		MOVF	H_B,W
		MOVWF	SHANGH
		MOVF	L_B,W
    		MOVWF	SHANGL
		RETLW	0
		
		
DIVYIWEI
			MOVLW	.16
			MOVWF	BIT
			MOVF	H_B,W
			MOVWF	P1H
			MOVF	L_B,W
			MOVWF	P1L
			CLRF	H_B
			CLRF	L_B
			RETLW	0			
		

	
		
		
CHU5		

		MOVLW	00H
		MOVWF	CHUH
		MOVLW	.11
		MOVWF	CHUL
		MOVF	2FH,W
		MOVWF	H_B
		MOVF	2EH,W
		MOVWF	L_B
		CALL	CHUZI		
		RETURN

		
		
		
		
;##########$$$$$$$$$$$$$@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%		

WRBYTES

 	
 		CLRF	FLAG
 		MOVWF	FSR				;源数据地址送F4
 		
 		MOVLW	0A0H		
 		MOVWF	TXBUF			;从机器地址送TXBUF
 		
 		CALL	BSTART			;发送开始条件
 		CALL	TX				;发送从机器地址
 		
 		MOVF	ADDR,W			;发送要写入的24L01的起始地址
 		MOVWF	TXBUF
 		CALL 	TX
 		
WRLOOP
		
		MOVF	0,W
		MOVWF	TXBUF			;把主机的数据先放到TXBUF中去
		CALL	TX				;把一个字节数据写到24L01
		
		INCF	FSR,1
		DECFSZ	NUMBER,	1		;已写入N个字节
		
		GOTO	WRLOOP
		CALL	BSTOP
		RETLW	0
	
	
	;**********************************
	
	
	
RDBYTES


		MOVWF	FSR				;目标数据地址送FSR
	
		MOVLW	0A0H
		MOVWF	TXBUF			;从设备地址送TXBUF
	
		CALL	BSTART			;发送开始条件
	
		CALL	TX				;发送从机器地址
	
		MOVF	ADDR,W			;发送要读入数据的起始地址
		MOVWF	TXBUF	
		CALL	TX
	
		CALL	BSTART			;发送开始命令
	
	
		MOVLW	0A1H
		MOVWF	TXBUF
		CALL	TX				;发送读控制信号
	
RDLOOP
		
		CALL	RX			
		MOVF	RXBUF,W			;从2401中读出一字节给RXBUF
		
		MOVWF	0			;再送给主机的寄存器
		
		INCF	FSR,1
		DECFSZ	NUMBER	,1		;已读完N个字节
		GOTO	LOWACK					;否,发出应答信号
		
		BSF    		STATUS,RP0
		MOVLW		B'00000000'
		MOVWF  		TRISD   
		BCF    		STATUS,RP0
              	NOP
		BSF		RD,SDA
		BCF		RD,SCL
		NOP
		BSF		RD,SCL
		
		CALL		BSTOP
		RETLW		0
	
	
LOWACK

        BSF    		STATUS,RP0
		MOVLW		B'00000000'
		MOVWF  		TRISD   
		BCF    		STATUS,RP0
		NOP
		BCF		RD,SDA			;SDA输出低电瓶,发出应答信号
		NOP
		BSF		RD,SCL
		NOP
		BCF		RD,SCL
		GOTO		RDLOOP			;读下一个字节
	
	
		;*************开始*********************
	
	
	
BSTART
		
	
		BSF    STATUS,RP0
		MOVLW	B'00000000'
		MOVWF  TRISD   
		BCF    STATUS,RP0
	    	NOP
	    	NOP
	    	NOP
	    	NOP
		NOP
		
		BSF		RD,SDA			;
		BSF		RD,SCL			;同为高电平
		NOP
		NOP
		NOP
		NOP
		BCF		RD,SDA			;在SCL=1时产生下降沿
		NOP
		NOP
		NOP
		NOP
		BCF		RD,SCL
		RETLW	0
		
	
	;*************  写一个字节数据  *********************
		
	
		
TX

		MOVLW	08H
		MOVWF	CNT				;一字节8
		
		
TXLP

		BCF		FLAG,0
		BTFSC		TXBUF,7
		BSF		FLAG,0

        	BSF    		STATUS,RP0
		MOVLW		B'00000000'
		MOVWF  		TRISD   
		BCF    		STATUS,RP0
              	NOP
		
		BTFSS		TXBUF,7			;从第七位开始送数据,从高到低.
		GOTO		TX0
       		BSF		RD,SDA
		GOTO		TX1
		
TX0		BCF		RD,SDA			;根据缓冲器的第7位去写RB,SDA


TX1		NOP
        	BCF		RD,SCL
		NOP
		NOP
		NOP
              	NOP
              	NOP
		BSF		RD,SCL			;SCL产生一上升沿,发送一位数据
		NOP
		NOP
		BCF		RD,SCL
		
		RLF		TXBUF,1
		
		DECFSZ		CNT  ,1			;发送8次???一个字节是否发送完??
		GOTO		TXLP			;否,发送下一位.
		BSF    		STATUS,RP0
		MOVLW		B'00001000'		;RB7变输入态.

		MOVWF  		TRISD   
		BCF    		STATUS,RP0
        	NOP
	
ACK		NOP
		BCF		RD,SCL
		NOP
		NOP
		NOP
		BSF		RD,SCL
		NOP
		NOP
		BTFSC		RD,SDA			;检测是否受到从机发来响应信号.
		GOTO		ACK
		
		BCF		RD,SCL
		RETLW	0
		
		

		
		
		
	;**************结束********************	
		
		
BSTOP   	


          
		
		BSF    		STATUS,RP0
		MOVLW		B'00000000';

		MOVWF  		TRISD   
		BCF    		STATUS,RP0
		
         	NOP
              
		BCF		RD,SDA
		BSF		RD,SCL
		NOP
		NOP
		NOP
	
              
		BSF		RD,SDA		;SDA产生上升沿,操作结束.
		NOP
		NOP
		NOP
		NOP
		NOP
		BCF		RD,SCL
		NOP
		RETLW		0
		
	
	
   ;**************读一个字节数据********************	
	
	
		
RX			
             
		MOVLW		08H
		MOVWF		CNT				;共8位.
		
		CLRF		RXBUF
		BSF    		STATUS,RP0
		MOVLW		B'00001000'

		MOVWF  		TRISD   
		BCF    		STATUS,RP0
              	NOP
		
RXLP
		BSF		RD,SCL			;**&&&&&&&&&
		BCF		STATUS,0
		NOP
		NOP
		NOP
              	NOP
              	NOP
		
		BTFSC		RD,SDA
		BSF		STATUS,0		;否,1 to C ,是,C中仍为0
		
		RLF		RXBUF,1			;C移入RXBUF.
		BCF		RD,SCL
		DECFSZ		CNT,1
		GOTO		RXLP			;一个字节未完,继续.
		RETLW		0
		
		
		
;**********************************
ROMW
		MOVF	BUF,W
		MOVWF	BUFFER1
		
		MOVF	ZUF,W
		MOVWF	BUFFER1+1

		MOVF	BMAX,W
		MOVWF	BUFFER1+2

		MOVF	BMIN,W
		MOVWF	BUFFER1+3
		
	




		MOVLW	4		;将BUFFER1开始的四字节数据写入24C01的10H-13H
		MOVWF	NUMBER		;buffer1为40H,BUFFER+3为43H
		MOVLW	10H		;ROM中的地址
		;MOVLW	22H
		MOVWF	ADDR
		MOVLW	BUFFER1
		CALL	WRBYTES
		RETLW	0



     
     
     		



;*************************************
	
	
ROMR    	
		MOVLW	4		;将24C01的10H-13H存放的数据读入BUFFER1开始四字节中
		MOVWF	NUMBER
		MOVLW	10H
		;MOVLW	22H
		MOVWF	ADDR
		MOVLW	BUFFER1
		CALL	RDBYTES
		

		MOVF	BUFFER1,W
		MOVWF	BUF

		MOVF	BUFFER1+1,W
		MOVWF	ZUF

		MOVF	BUFFER1+2,W
		MOVWF	BMAX
		
		MOVF	BUFFER1+3,W
		MOVWF	BMIN

		RETLW	0



;&&&&&$$$$$$$$$$$$$$$$$$$	
SERVE		
			MOVF	BUF,W
			SUBWF	BUF_B,0
			BTFSS	STATUS,2
			GOTO	FUBUF
			
			
			MOVF	ZUF,W
			SUBWF	ZUF_B,0
			BTFSS	STATUS,2
			GOTO	FUZUF
			
		
			MOVF	BMAX,W
			SUBWF	BMAX_B,0
			BTFSS	STATUS,2
			GOTO	XIE1
			
			MOVF	BMIN,W
			SUBWF	BMIN_B,0
			BTFSS	STATUS,2
			GOTO	XIE2
			

			MOVF	HOUR,W
			SUBWF	HOUR_BUF,0
			BTFSS	STATUS,2
			GOTO	XIE_HOUR


			MOVF	TIAN,W
			SUBWF	TIAN_BUF,0
			BTFSS	STATUS,2
			GOTO	XIE_TIAN


			;MOVF	MINUTE,W		;分钟不保存
			;SUBWF	MINUTE_BUF,0
			;BTFSS	STATUS,2
			;GOTO	XIE_MINUTE


			RETLW	0
		
FUBUF		
			MOVF	BUF,W
			MOVWF	BUF_B
			CALL	ROMW
			RETLW	0
			
FUZUF		
			MOVF	ZUF,W
			MOVWF	ZUF_B
			CALL	ROMW
			RETLW	0

XIE1	
			MOVF	BMAX,W
			MOVWF	BMAX_B
			CALL	ROMW
			RETLW	0

XIE2	
			MOVF	BMIN,W
			MOVWF	BMIN_B
			CALL	ROMW
			RETLW	0



XIE_HOUR

			MOVF	HOUR,W
			MOVWF	HOUR_BUF
			CALL	ROMW_TIME
			RETLW	0

XIE_TIAN
			MOVF	TIAN,W
			MOVWF	TIAN_BUF
			CALL	ROMW_TIME
			RETLW	0

;XIE_MINUTE
			;MOVF	MINUTE,W
			;MOVWF	MINUTE_BUF
			;CALL	ROMW_TIME
			;RETLW 0
		


;_________________________________
ROMW_TIME

		MOVLW	2		;分钟不保存;将TIAN开始的2字节数据写入24C01的20H-21H
		MOVWF	NUMBER		;
		MOVLW	25H		;ROM中的地址
		
		MOVWF	ADDR
		MOVLW	TIAN
		CALL	WRBYTES
		RETLW	0
					


;_________________________________	
ROMR_TIME    	
		MOVLW	2		;将24C01的20H-21H存放的数据读入TIAN开始2字节中
		MOVWF	NUMBER
		MOVLW	25H
		MOVWF	ADDR
		MOVLW	TIAN
		CALL	RDBYTES
		
		MOVF	TIAN,W
		MOVWF	TIAN_BUF

		MOVF	HOUR,W
		MOVWF	HOUR_BUF

		;MOVF	MINUTE,W
		;MOVWF	MINUTE_BUF
	


		RETLW	0








;==================================

SHIBIEMA_R

	   	
		MOVLW	1		;将24C01的50H存放的数据读入BUFFER1开始1字节中
		MOVWF	NUMBER
		MOVLW	50H
	
		MOVWF	ADDR
		MOVLW	BUFFER1
		CALL	RDBYTES
		

		MOVF	BUFFER1,W

		BANKSEL	SHIBIEMA
		MOVWF	SHIBIEMA

			RETLW	0

		
;_________________________________
		FILL (NOP),YUAN-$

			ORG	0FFEH

YUAN

			PAGESEL	ZIDONG
			GOTO	ZIDONG
			

		

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


	

			END 
	
	

	
	
	
	
	
	
	
	
	
	













			
		

 
	
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

⌨️ 快捷键说明

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