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

📄 initiate.asm

📁 实现单片机模拟iic
💻 ASM
字号:


;;/********************************************
IT_710E:
	PUSH	PSW
	PUSH	ACC

WR710E:
	LCALL	STA11		;START IIC BUS
	NOP
	MOV	A,#48H		;#48H=SLAVE DEVICE ADRESS(W)
	LCALL	WRBYT11		;SEND SLA
	NOP
	LCALL	CACK11		;CHECK ANSWER BIT
	JB	FLAG,WR710E

	MOV	A,#0EH		;SUBADRESS
	LCALL	WRBYT11		;SEND SBA
	NOP
	LCALL	CACK11		;CHECK ANSWER BIT
	JB	FLAG,WR710E

	MOV	A,#81H
        LCALL	WRBYT11
	LCALL	CACK11
	JB	FLAG,WR710E
	LCALL	STOP11

	POP	ACC
	POP	PSW
	RET


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

IT1_7114RST:
	PUSH	PSW
	PUSH	ACC

WR7114RST:
	LCALL	STA14		;START IIC BUS
	NOP
	MOV	A,#42H		;#48H=SLAVE DEVICE ADRESS(W)
	LCALL	WRBYT14		;SEND SLA
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,WR7114RST

	MOV	A,#88H		;SUBADRESS
	LCALL	WRBYT14		;SEND SBA
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,WR7114RST
	MOV	A,#0F4H
        LCALL	WRBYT14
	LCALL	CACK14
	JB	FLAG,WR7114RST
	LCALL	STOP14

	POP	ACC
	POP	PSW
	RET


DISSCALER:
	PUSH	PSW
	PUSH	ACC
DISSCALER0:
	LCALL	STA14		;START IIC BUS
	NOP
	MOV	A,#42H		;#48H=SLAVE DEVICE ADRESS(W)
	LCALL	WRBYT14		;SEND SLA
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,DISSCALER0

	MOV	A,#88H		;SUBADRESS
	LCALL	WRBYT14		;SEND SBA
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,DISSCALER0
	MOV	A,#0D4H
        LCALL	WRBYT14
	LCALL	CACK14
	JB	FLAG,DISSCALER0
	LCALL	STOP14

	POP	ACC
	POP	PSW

	RET
;*********************************************
;INITIALIZE SAA7111
;*********************************************

IT1_7111:
	PUSH	PSW
	PUSH	ACC

WR7111:
	LCALL	STA11		;START IIC BUS
	NOP
	MOV	A,#48H		;#48H=SLAVE DEVICE ADDRESS(W)
	LCALL	WRBYT11		;SEND SLA
	NOP
	LCALL	CACK11		;CHECK ANSWER BIT
	JB	FLAG,WR7111

	MOV	A,#00H		;SUBADRESS
	LCALL	WRBYT11		;SEND SBA
	NOP
	LCALL	CACK11		;CHECK ANSWER BIT
	JB	FLAG,WR7111

	MOV	COUNTER,#13H    ;???
	MOV	DPTR,#SAA7111
WRDA11: CLR	A
	MOVC	A,@A+DPTR
	LCALL	WRBYT11
	LCALL	CACK11
	JB	FLAG,WR7111
	INC	DPTR
	DJNZ	COUNTER,WRDA11
	LCALL	STOP11

	POP	ACC
	POP	PSW
	RET

;---------------------------------------------
;读SAA7111一个寄存器
;INPUT=SUBAD; OUTPUT=REGDATA
;---------------------------------------------
RAREG7111:
	PUSH	PSW
	PUSH	ACC

RAREG171:
	LCALL	STA11		;SEND START BIT

	MOV	A,#48H		;SEND DEVICE ADDRESS (WRITE OPERATION)
	LCALL	WRBYT11
	LCALL	CACK11
	JB	FLAG,RAREG171

	MOV	A,SUBAD		;SUBAD		;SEND WORD ADDRESS
	LCALL	WRBYT11
	LCALL	CACK11
	JB	FLAG,RAREG171

	LCALL	STA11		;SEND START BIT

	MOV	A,#49H		;SEND WORD ADDRESS (READ OPERATION)
	LCALL	WRBYT11
	LCALL	CACK11
	JB	FLAG,RAREG171

	LCALL	RDBYT11
	MOV	REGDATA,A

	LCALL	MNACK11
	LCALL	STOP11
	POP	ACC
	POP	PSW

	RET
;
;-----------------------------------------------------------------

;--------------------------------------------------------------------
;写SAA7111一个寄存器(SUBAD=SUBADDRESS;REGDATA)
;--------------------------------------------------------------------
WAREG7111:
	PUSH	PSW
	PUSH	ACC

WAREG17111:
	LCALL	STA11		;START IIC BUS
	NOP
	MOV	A,#48H		;SLA=SLAVE DEVICE ADRESS
	LCALL	WRBYT11		;SEND SLA
	NOP
	LCALL	CACK11		;CHECK ANSWER BIT
	JB	FLAG,WAREG17111

	MOV	A,SUBAD		;#02=INDEX REGISTER SUB ADRESS
	LCALL	WRBYT11		;
	NOP
	LCALL	CACK11		;CHECK ANSWER BIT
	JB	FLAG,WAREG17111

	MOV	A,REGDATA	;REGDATA=REGISTER DATA
	LCALL	WRBYT11		;SEND REG
	NOP
	LCALL	CACK11		;CHECK ANSWER BIT
	JB	FLAG,WAREG17111

	LCALL	STOP11

	POP	ACC
	POP	PSW
	RET
;***************************************************

;*********************************************
;INITIALIZE SAA7114
;*********************************************

IT1_7114:
	PUSH	PSW
	PUSH	ACC

WR7114:
	LCALL	STA14		;START IIC BUS
	NOP
	MOV	A,#42H		;#42H=SLAVE DEVICE ADRESS(W)???????
	LCALL	WRBYT14	        ;SEND SLA
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,WR7114

	MOV	A,#00H		;SUBADRESS
	LCALL	WRBYT14		;SEND SBA
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,WR7114

	MOV	COUNTER,#0F0H   ;???
	MOV	DPTR,#SAA7114
WRDA14: CLR	A
	MOVC	A,@A+DPTR
	LCALL	WRBYT14
	LCALL	CACK14
	JB	FLAG,WR7114
	INC	DPTR
	DJNZ	COUNTER,WRDA14
	LCALL	STOP14

	POP	ACC
	POP	PSW
	RET

;--------------------------------------------------------------------
;写SAA7114一个寄存器(SUBAD=SUBADDRESS;REGDATA)
;--------------------------------------------------------------------
WAREG7114:
	PUSH	PSW
	PUSH	ACC

WAREG17114:
	LCALL	STA14		;START IIC BUS
	NOP
	MOV	A,#42H		;SLA=SLAVE DEVICE ADRESS
	LCALL	WRBYT14		;SEND SLA
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,WAREG17114

	MOV	A,SUBAD		;#02=INDEX REGISTER SUB ADRESS
	LCALL	WRBYT14		;
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,WAREG17114

	MOV	A,REGDATA	;REGDATA=REGISTER DATA
	LCALL	WRBYT14		;SEND REG
	NOP
	LCALL	CACK14		;CHECK ANSWER BIT
	JB	FLAG,WAREG17114

	LCALL	STOP14

	POP	ACC
	POP	PSW
	RET
;***************************************************

;---------------------------------------------
;读SAA7114一个寄存器
;INPUT=SUBAD; OUTPUT=REGDATA
;---------------------------------------------
RAREG7114:
	PUSH	PSW
	PUSH	ACC

RAREG14:
	LCALL	STA14		;SEND START BIT

	MOV	A,#42H		;SEND DEVICE ADDRESS (WRITE OPERATION)
	LCALL	WRBYT14
	LCALL	CACK14
	JB	FLAG,RAREG14

	MOV	A,SUBAD		;SUBAD		;SEND WORD ADDRESS
	LCALL	WRBYT14
	LCALL	CACK14
	JB	FLAG,RAREG14

	LCALL	STA14		;SEND START BIT

	MOV	A,#43H		;SEND WORD ADDRESS (READ OPERATION)
	LCALL	WRBYT14
	LCALL	CACK14
	JB	FLAG,RAREG14

	LCALL	RDBYT14
	MOV	REGDATA,A

	LCALL	MNACK14
	LCALL	STOP14
	POP	ACC
	POP	PSW

	RET
;
;-----------------------------------------------------------------

;*********************************************
;INITIALIZE SAA7121
;*********************************************

;to display the chart some register should be changed

IT1_7121:
	PUSH	PSW
	PUSH	ACC

WR7121:
	LCALL	STA21		;START IIC BUS
	NOP
	MOV	A,#8CH		;#8CH=SLAVE DEVICE ADRESS(W)?????????
	LCALL	WRBYT21		;SEND SLA
	NOP
	LCALL	CACK21		;CHECK ANSWER BIT
	JB	FLAG,WR7121

	MOV	A,#00H		;SUBADRESS
	LCALL	WRBYT21		;SEND SBA
	NOP
	LCALL	CACK21		;CHECK ANSWER BIT
	JB	FLAG,WR7121

	MOV	COUNTER,#80H        ;???
	MOV	DPTR,#SAA7121
WRDA21: CLR	A
	MOVC	A,@A+DPTR
	LCALL	WRBYT21
	LCALL	CACK21
	JB	FLAG,WR7121
	INC	DPTR
	DJNZ	COUNTER,WRDA21
	LCALL	STOP21

	POP	ACC
	POP	PSW
	RET


;***************************************************
;---------------------------------------------
;读SAA7121一个寄存器
;INPUT=SUBAD; OUTPUT=REGDATA
;---------------------------------------------
RAREG7121:
	PUSH	PSW
	PUSH	ACC

RAREG21:
	LCALL	STA21		;SEND START BIT

	MOV	A,#8DH		;SEND WORD ADDRESS (READ OPERATION)
	LCALL	WRBYT21
	LCALL	CACK21
	JB	FLAG,RAREG21

	LCALL	RDBYT21
	MOV	REGDATA,A

	LCALL	MNACK21
	LCALL	STOP21
	POP	ACC
	POP	PSW

	RET
;


;--------------------------------------------------------------------
;写SAA7121一个寄存器(SUBAD=SUBADDRESS;REGDATA)
;--------------------------------------------------------------------
WAREG7121:
	PUSH	PSW
	PUSH	ACC

WAREG17121:
	LCALL	STA21		;START IIC BUS
	NOP
	MOV	A,#8CH		;SLA=SLAVE DEVICE ADRESS
	LCALL	WRBYT21		;SEND SLA
	NOP
	LCALL	CACK21		;CHECK ANSWER BIT
	JB	FLAG,WAREG17121

	MOV	A,SUBAD		;#02=INDEX REGISTER SUB ADRESS
	LCALL	WRBYT21		;
	NOP
	LCALL	CACK21		;CHECK ANSWER BIT
	JB	FLAG,WAREG17121

	MOV	A,REGDATA	;REGDATA=REGISTER DATA
	LCALL	WRBYT21		;SEND REG
	NOP
	LCALL	CACK21		;CHECK ANSWER BIT
	JB	FLAG,WAREG17121

	LCALL	STOP21

	POP	ACC
	POP	PSW
	RET
;***************************************************

;+++++++++++++++++++++++++++++++++++++++++++++++++++
;SAA7111寄存器值表
;+++++++++++++++++++++++++++++++++++++++++++++++++++
SAA7111:DB	000H	;0 0 0 0 0 0 0 0	00
	DB	000H	;0 0 0 0 0 0 0 0	01
	DB	0D8H	;1 1 0 0 0 0 1 1	02
	DB	033H	;0 0 1 0 0 0 1 1	03
	DB	000H	;0 0 0 0 0 0 0 0	04
	DB	000H	;0 0 0 0 0 0 0 0	05
	DB	006H	;1 1 1 0 1 0 1 1	06
	DB	0f6H	;1 1 1 0 0 0 0 0	07
	DB	088H	;1 0 0 0 1 0 0 0	08
	DB	073H	;0 0 0 0 0 0 0 1	09
	DB	080H	;1 0 0 0 0 0 0 0	0A
	DB	047H	;0 1 0 0 0 1 1 1	0B
	DB	040H	;0 1 0 0 0 0 0 0 	0C
	DB	000H	;0 0 0 0 0 0 0 0	0D
	DB	001H	;0 0 0 0 0 0 0 1	0E
	DB	000H	;0 0 0 0 0 0 0 0	0F
	DB	048H	;1 0 0 0 0 0 0 0	10
	DB	00DH	;0 0 0 1 1 1 0 1	11
	DB	081H	;0 0 0 0 0 0 0 1	12





;+++++++++++++++++++++++++++++++++++++++++++++++++++
;SAA7121寄存器值表
;+++++++++++++++++++++++++++++++++++++++++++++++++++
;to desplay the chart some register should be change

SAA7121:
	DB	       000H,000H,000H,000H,000H,000H,000H,000H  ;00-07
        DB             000H,000H,000H,000H,000H,000H,000H,000H

        DB             000H,000H,000H,000H,000H,000H,000H,000H  ;10-17
        DB             000H,000H,000H,000H,000H,000H,000H,000H

        DB             000H,000H,000H,000H,000H,000H,00dH,000H	;20-27;;;;00H——25H全为00H;
        DB             09fH,01fH,075H,03fH,006H,03fH,000H,000H  ;28,29,2A

        DB             000H,000H,000H,000H,000H,000H,000H,000H  ;30-37
        DB             01aH,01aH,003H,000H,000H,000H,000H,000H  ;//3AH控制行场触发分别由RCV2和RCV1得到而或由MP口得到//org wei 1aa

        DB             000H,000H,000H,068H,010H,097H,04cH,018H  ;40-47
        DB             09bH,093H,09fH,0ffH,07cH,034H,03fH,017H

        DB             000H,083H,083H,080H,08cH,00fH,0c3H,006H  ;50-57
        DB             002H,080H,0beH,07DH,0AFH,033H,075H,03fH  ;5D(2d->2f),5E(7f->6f),5A,5e,5f

        DB             000H,002H,02fh,0CBH,08AH,009H,02AH,077H  ;60h=NULL/insync:62h(2f->45h),6bh(32h)//60--67
        DB             041H,088H,041H,032H,08aH,000H,024H,014H  ;;;/exsync:62h(c6hh),6bh(20h)//68--6f,原来6c=02,6d=20
								;6BH控制RCV2和RCV1分别输出为HS和VS信号
        DB             085H,007H,010h,03eH,0b8H,01eH,015H,016H  ;70-77,70=81,71=03
        DB             015H,016H,007H,038H,040H,000H,000H,000H



;+++++++++++++++++++++++++++++++++++++++++++++++++++
;SAA7114寄存器值表
;+++++++++++++++++++++++++++++++++++++++++++++++++++
SAA7114:
        DB      000H,008H,0C0H,010H,090H,090H,0E1H,0d7H          ;01-07
	DB	088H,040H,081H,043H,03bH,000H,081H,02AH

	DB	007H,000H,0C9H,09AH,010H,011H,038H,060H          ;10-17
	DB	040H,080H,000H,000H,000H,000H,000H,000H

        DB      000H,000H,000H,000H,000H,000H,000H,000H          ;20-27            20-2F为保留位
        DB      000H,000H,000H,000H,000H,000H,000H,000H
        DB      0BCH,0DFH,002H,000H,0CDH,0CCH,03AH,000H          ;30-37            30-3F为音频设置
        DB      003H,010H,000H,000H,000H,000H,000H,000H
        DB      000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH          ;40-47            40-7F为VBI设置
        DB      0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
        DB      0FFH,0FFH,0FFH,0FFH,05FH,0FFH,0FFH,0FFH          ;50-57
        DB      000H,047H,003H,003H,000H,03EH,000H,000H
        DB      000H,000H,000H,000H,000H,000H,000H,000H          ;60-67
        DB      000H,000H,000H,000H,000H,000H,000H,000H
        DB      000H,000H,000H,000H,000H,000H,000H,000H          ;70-77
        DB      000H,000H,000H,000H,000H,000H,000H,000H
        DB      010H,000H,000H,001H,0A0H,000H,040H,001H          ;80-87            83设为001H,开放X-PORT口
        DB      0c6H,000H,000H,000H,000H,000H,000H,000H

        DB      000H,000H,010H,000H,000H,000H,0D0H,002H          ;90-97
        DB      000H,000H,022H,000H,0D0H,000H,022H,000H

        DB      001H,001H,000H,000H,080H,040H,040H,000H          ;A0-A7
        DB      000H,004H,020H,000H,000H,001H,000H,000H
        DB      000H,004H,020H,000H,000H,000H,000H,000H          ;B0-B7
        DB      000H,000H,000H,000H,000H,000H,000H,000H
        DB      010H,000H,000H,000H,0A0H,000H,040H,001H          ;C0-C7
        DB      000H,000H,000H,000H,000H,000H,000H,000H
        DB      000H,000H,010H,000H,000H,000H,0D0H,002H          ;D0-D7
        DB      000H,000H,022H,000H,0D0H,000H,022H,000H
        DB      000H,000H,000H,000H,000H,000H,000H,000H          ;E0-E7
        DB      000H,000H,000H,000H,000H,000H,000H,000H
;************************************

DELAY7F7F0F:  MOV R6,#7FH
DLY1:   MOV R5,#7FH
DLY2:   MOV R4,#0FH
DLY3:   DJNZ R4,DLY3
        DJNZ R5,DLY2
        DJNZ R6,DLY1
        RET

DELAY4MS:
	MOV R6,#0AH
DLAY1:  MOV R5,#7FH
DLAY2:  MOV R4,#10H
DLAY3:  DJNZ R4,DLAY3
        DJNZ R5,DLAY2
        DJNZ R6,DLAY1
        RET


end

⌨️ 快捷键说明

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