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

📄 cs5460.asm

📁 这是cs5460a的子程序
💻 ASM
字号:
;----------------------------------
;CS5460A_INIT CS5460A初始化
;
;---------------------------------
CS5460A_INIT:      LDI    R16,   $FF
                   CALL   CS5460A_WR8
                   LDI    R16,   $FF
                   CALL   CS5460A_WR8
				   LDI    R16,   $FF
                   CALL   CS5460A_WR8
				   LDI    R16,   $FE
                   CALL   CS5460A_WR8  ;串口初始化

                   LDI    R16,   $42
				   LDS    R19,   LIRMSOS0
				   LDS    R18,   LIRMSOS1
				   LDS    R17,   LIRMSOS2
				   CALL   CS5460A_WR32    ;直流偏移

				   LDI    R16,   $60
				   LDS    R19,   LIRMSOS3
				   LDS    R18,   LIRMSOS4
				   LDS    R17,   LIRMSOS5
				   CALL   CS5460A_WR32    ;交流偏移

				   LDI    R16,   $44
				   LDS    R19,   LIRMSDE0
				   LDS    R18,   LIRMSDE1
				   LDS    R17,   LIRMSDE2
				   CALL   CS5460A_WR32    ;电流增益

                   LDI    R16,   $4A
				   LDS    R19,   COUNT0
				   LDS    R18,   COUNT1
				   LDS    R17,   COUNT2
				   CALL   CS5460A_WR32    ;直流偏移

				   LDI    R16,   $78
				   LDS    R19,   PEIZHI0
				   LDS    R18,   PEIZHI1
				   LDS    R17,   PEIZHI2
				   CALL   CS5460A_WR32    ;配置寄存器

				   LDI    R16,   $E8
                   CALL   CS5460A_WR8
                   LDI    R16,   $E8
                   CALL   CS5460A_WR8
				   LDI    R16,   $E8
                   CALL   CS5460A_WR8    ;开始转化
				   RET


;-------------------------------
;CS5460A_WR8 发送一个字节命令
;入口:  R16
;占用资源:R16 R25
;------------------------------
CS5460A_WR8:        CBI   PORTD,CSCS
                    ;CALL  DELAY500US
                    LDI   R25,    $8
					CLC
LOOP1:
                    ROL   R16
					BRCS  YI1
					CBI   PORTD,CSSDI
					RJMP  SZ1
YI1:                SBI   PORTD,CSSDI
SZ1:                NOP
                    NOP
					SBI   PORTD,CSSCLK
					NOP
					CBI   PORTD,CSSCLK
					NOP
					DEC   R25
					BRNE  LOOP1
					CALL  DELAY500US
					SBI   PORTD,CSSCLK
					RET

;----------------------------------
;CS5460A_WR32 向寄存器写数据
;入口:  R16 R17 R18 R19
;占用资源:R25
;---------------------------------------
CS5460A_WR32:       CBI   PORTD,CSCS              ;写入命令(寄存器地址)
                    CALL  DELAY500US
                    LDI   R25,    $8
					CLC
LOOP2:
                    ROL   R16
					BRCS  YI2              ;判断数据位1或0
					CBI   PORTD,CSSDI            ;置0
					RJMP  SZ2
YI2:                SBI   PORTD,CSSDI            ;置1
SZ2:                NOP
                    NOP
					SBI   PORTD,CSSCLK           ;时钟下降沿改变数据
					NOP
					CBI   PORTD,CSSCLK
					NOP
					DEC   R25
					BRNE  LOOP2

                    CALL  DELAY500US       ;写入第一个数据字节
                    LDI   R25,    $8
					CLC
LOOP3:
                    ROL   R19
					BRCS  YI3
					CBI   PORTD,CSSDI
					RJMP  SZ3
YI3:                SBI   PORTD,CSSDI
SZ3:                NOP
                    NOP
					SBI   PORTD,CSSCLK
					NOP
					CBI   PORTD,CSSCLK
					NOP
					DEC   R25
					BRNE  LOOP3

                    CALL  DELAY500US       ;写入第二个数据字节
                    LDI   R25,    $8
					CLC
LOOP4:
                    ROL   R18
					BRCS  YI4
					CBI   PORTD,CSSDI
					RJMP  SZ4
YI4:                SBI   PORTD,CSSDI
SZ4:                NOP
                    NOP
					SBI   PORTD,CSSCLK
					NOP
					CBI   PORTD,CSSCLK
					NOP
					DEC   R25
					BRNE  LOOP4

                    CALL  DELAY500US       ;写入第三个数据字节
                    LDI   R25,    $8
					CLC
LOOP5:
                    ROL   R17
					BRCS  YI5
					CBI   PORTD,CSSDI
					RJMP  SZ5
YI5:                SBI   PORTD,CSSDI
SZ5:                NOP
                    NOP
					SBI   PORTD,CSSCLK
					NOP
					CBI   PORTD,CSSCLK
					NOP
					DEC   R25
					BRNE  LOOP5
                    CALL  DELAY500US
					SBI   PORTD,CSSCLK
					RET

;--------------------------------------
;CS5460A_RE32     从寄存器读出数据
;出口;
;占用资源;
;--------------------------------------
CS5460A_RE32:       CBI   PORTD,CSCS
                    SBI   PORTD,CSSDO
                    CALL  DELAY500US       ;送命令子节(寄存器地址)
                    LDI   R25,    $8
					CLC
LOOP6:
                    ROL   R16
					BRCS  YI6
					CBI   PORTD,CSSDI
					RJMP  SZ6
YI6:                SBI   PORTD,CSSDI
SZ6:                NOP
                    NOP
					SBI   PORTD,CSSCLK
					NOP
					CBI   PORTD,CSSCLK
					NOP
					DEC   R25
					BRNE  LOOP6

					LDI   R25,   $8     ;读出第一个字节
                    CALL  DELAY500US
					SBI   PORTD,CSSDI
					CLC
LOOP7:              SBI   PORTD,CSSCLK
                    NOP
                    SBI   PORTD,CSSDO
					SBIC  PIND,   5
					SEC
					ROL   R3
					CBI   PORTD,CSSCLK
					CALL  DELAY500US
					DEC   R25
					BRNE  LOOP7

					LDI   R25,   $8     ;读出第二个字节
					CALL  DELAY500US
LOOP8:              SBI   PORTD,CSSCLK
                    NOP
					SBI   PORTD,CSSDO
					SBIC  PIND,  5
					SEC
					ROL   R2
					CBI   PORTD,CSSCLK
					CALL  DELAY500US
					DEC   R25
					BRNE  LOOP8

                    LDI   R25,   $8     ;读出第三个字节
                    CALL  DELAY500US
					SBI   PORTD,CSSDI
					CLC
LOOP9:              SBI   PORTD,CSSCLK
                    NOP
                    SBI   PORTD,CSSDO
					SBIC  PIND,   5
					SEC
					ROL   R1
					CBI   PORTD,CSSCLK
					CALL  DELAY500US
					DEC   R25
					BRNE  LOOP9
                    NOP
					NOP
					SBI   PORTD,CSSCLK
					CBI   PORTD,CSSDO
					RET

⌨️ 快捷键说明

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