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

📄 ea1010_061022.asm

📁 keil-c开发
💻 ASM
📖 第 1 页 / 共 5 页
字号:
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #6            ;  第3显示区(字符行)地址
            MOV   CB_IIC_Display+1, #82         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #27	        ;  显示区起始列数
            MOV   CB_IIC_Display+3, #5          ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #20         ;  显示区数据长度(总长度-2)
            ;确定
            MOV   CB_IIC_Display+5, #144
            MOV   CB_IIC_Display+6, #145
            MOV   CB_IIC_Display+7, #146
            MOV   CB_IIC_Display+8, #147
            MOV   CB_IIC_Display+9, #50

            LCALL F_iicVerify20;    计算校验
            LCALL F_iic_Write22;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED


            MOV   CB_IIC_Display, #6             ;  第3显示区(字符行)地址
            MOV   CB_IIC_Display+1, #144         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #1	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #1           ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #5           ;  显示区数据长度(总长度-2)
            MOV   CB_IIC_Display+5, #0           ;
            LCALL F_iicVerify5;    计算校验
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #6            ;  第3显示区(字符行)地址
            MOV   CB_IIC_Display+1, #82         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #27	        ;  显示区起始列数
            MOV   CB_IIC_Display+3, #5          ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #20         ;  显示区数据长度(总长度-2)
            ;确定
            MOV   CB_IIC_Display+5, #144
            MOV   CB_IIC_Display+6, #145
            MOV   CB_IIC_Display+7, #146
            MOV   CB_IIC_Display+8, #147
            MOV   CB_IIC_Display+9, #50

            LCALL F_iicVerify20;    计算校验
            LCALL F_iic_Write22;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED


            MOV   CB_IIC_Display, #6             ;  第3显示区(字符行)地址
            MOV   CB_IIC_Display+1, #144         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #1	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #1           ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #5           ;  显示区数据长度(总长度-2)
            MOV   CB_IIC_Display+5, #0           ;
            LCALL F_iicVerify5;    计算校验
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #6            ;  第3显示区(字符行)地址
            MOV   CB_IIC_Display+1, #82         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #27	        ;  显示区起始列数
            MOV   CB_IIC_Display+3, #5          ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #20         ;  显示区数据长度(总长度-2)
            ;确定
            MOV   CB_IIC_Display+5, #144
            MOV   CB_IIC_Display+6, #145
            MOV   CB_IIC_Display+7, #146
            MOV   CB_IIC_Display+8, #147
            MOV   CB_IIC_Display+9, #50

            LCALL F_iicVerify20;    计算校验
            LCALL F_iic_Write22;  发送数据组
            LCALL F_iic_Stop


            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #6             ;  第3显示区(字符行)地址
            MOV   CB_IIC_Display+1, #144         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #1	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #1           ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #5           ;  显示区数据长度(总长度-2)
            MOV   CB_IIC_Display+5, #0           ;
            LCALL F_iicVerify5;    计算校验
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED


;************返回第二屏************
            MOV   CB_IIC_Display, #2            ;  第1显示区(字符行)地址
            MOV   CB_IIC_Display+1, #20         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #27	        ;  显示区起始列数
            MOV   CB_IIC_Display+3, #13         ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #20         ;  显示区数据长度(总长度-2)
            ;调节显示位置
            MOV   CB_IIC_Display+5, #89
            MOV   CB_IIC_Display+6, #90
            MOV   CB_IIC_Display+7, #91
            MOV   CB_IIC_Display+8, #92
            MOV   CB_IIC_Display+9, #93
            MOV   CB_IIC_Display+10, #94
            MOV   CB_IIC_Display+11, #95
            MOV   CB_IIC_Display+12, #96
            MOV   CB_IIC_Display+13, #97
            MOV   CB_IIC_Display+14, #98
            MOV   CB_IIC_Display+15, #99
            MOV   CB_IIC_Display+16, #100
            MOV   CB_IIC_Display+17, #50

            LCALL F_iicVerify20;    计算校验
            LCALL F_iic_Write22;  发送数据组
            LCALL F_iic_Stop

            MOV   CB_IIC_Display, #4             ;  第2显示区(字符行)地址
            MOV   CB_IIC_Display+1, #70          ;  显示区起始行数
            MOV   CB_IIC_Display+2, #27	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #17          ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #20          ;  显示区数据长度(总长度-2)
            ;取消字符叠加功能
            MOV   CB_IIC_Display+5, #128
            MOV   CB_IIC_Display+6, #129
            MOV   CB_IIC_Display+7, #130
            MOV   CB_IIC_Display+8, #131
            MOV   CB_IIC_Display+9, #55
            MOV   CB_IIC_Display+10, #56
            MOV   CB_IIC_Display+11, #57
            MOV   CB_IIC_Display+12, #58
            MOV   CB_IIC_Display+13, #59
            MOV   CB_IIC_Display+14, #60
            MOV   CB_IIC_Display+15, #61
            MOV   CB_IIC_Display+16, #62
            MOV   CB_IIC_Display+17, #132
            MOV   CB_IIC_Display+18, #133
            MOV   CB_IIC_Display+19, #134
            MOV   CB_IIC_Display+20, #135

            LCALL F_iicVerify20;    计算校验
            LCALL F_iic_Write22;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #4             ;  第2显示区(字符行)地址
            MOV   CB_IIC_Display+1, #144         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #1	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #1           ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #5           ;  显示区数据长度(总长度-2)
            MOV   CB_IIC_Display+5, #0           ;
            LCALL F_iicVerify5;    计算校验
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #4             ;  第2显示区(字符行)地址
            MOV   CB_IIC_Display+1, #70          ;  显示区起始行数
            MOV   CB_IIC_Display+2, #27	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #17          ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #20          ;  显示区数据长度(总长度-2)
            ;取消字符叠加功能
            MOV   CB_IIC_Display+5, #128
            MOV   CB_IIC_Display+6, #129
            MOV   CB_IIC_Display+7, #130
            MOV   CB_IIC_Display+8, #131
            MOV   CB_IIC_Display+9, #55
            MOV   CB_IIC_Display+10, #56
            MOV   CB_IIC_Display+11, #57
            MOV   CB_IIC_Display+12, #58
            MOV   CB_IIC_Display+13, #59
            MOV   CB_IIC_Display+14, #60
            MOV   CB_IIC_Display+15, #61
            MOV   CB_IIC_Display+16, #62
            MOV   CB_IIC_Display+17, #132
            MOV   CB_IIC_Display+18, #133
            MOV   CB_IIC_Display+19, #134
            MOV   CB_IIC_Display+20, #135

            LCALL F_iicVerify20;    计算校验
            LCALL F_iic_Write22;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #4             ;  第2显示区(字符行)地址
            MOV   CB_IIC_Display+1, #144         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #1	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #1           ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #5           ;  显示区数据长度(总长度-2)
            MOV   CB_IIC_Display+5, #0           ;
            LCALL F_iicVerify5;    计算校验
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop

            MOV   RB_IICDelayLed,#8
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #4            ;  第2显示区(字符行)地址
            MOV   CB_IIC_Display+1, #70         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #27	        ;  显示区起始列数
            MOV   CB_IIC_Display+3, #17         ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #20         ;  显示区数据长度(总长度-2)
            ;取消字符叠加功能
            MOV   CB_IIC_Display+5, #128
            MOV   CB_IIC_Display+6, #129
            MOV   CB_IIC_Display+7, #130
            MOV   CB_IIC_Display+8, #131
            MOV   CB_IIC_Display+9, #55
            MOV   CB_IIC_Display+10, #56
            MOV   CB_IIC_Display+11, #57
            MOV   CB_IIC_Display+12, #58
            MOV   CB_IIC_Display+13, #59
            MOV   CB_IIC_Display+14, #60
            MOV   CB_IIC_Display+15, #61
            MOV   CB_IIC_Display+16, #62
            MOV   CB_IIC_Display+17, #132
            MOV   CB_IIC_Display+18, #133
            MOV   CB_IIC_Display+19, #134
            MOV   CB_IIC_Display+20, #135

            LCALL F_iicVerify20;    计算校验
            LCALL F_iic_Write22;  发送数据组
            LCALL F_iic_Stop


            MOV   RB_IICDelayLed,#12
            LCALL F_DelayLED

            MOV   CB_IIC_Display, #2             ;  第1显示区(字符行)地址
            MOV   CB_IIC_Display+1, #144         ;  第1显示区起始行数
            MOV   CB_IIC_Display+2, #1	         ;  第1显示区起始列数
            MOV   CB_IIC_Display+3, #1           ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #5           ;  第1显示区数据长度(总长度-2)
            MOV   CB_IIC_Display+5, #0           ;
            LCALL F_iicVerify5;    计算校验
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop

            MOV   CB_IIC_Display, #4             ;  第2显示区(字符行)地址
            MOV   CB_IIC_Display+1, #144         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #1	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #1           ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #5           ;  显示区数据长度(总长度-2)
            MOV   CB_IIC_Display+5, #0           ;
            LCALL F_iicVerify5;    计算校验
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop

            MOV   CB_IIC_Display, #6             ;  第3显示区(字符行)地址
            MOV   CB_IIC_Display+1, #144         ;  显示区起始行数
            MOV   CB_IIC_Display+2, #1	         ;  显示区起始列数
            MOV   CB_IIC_Display+3, #1           ;  一列中显示的字符数
            MOV   CB_IIC_Display+4, #5           ;  显示区数据长度(总长度-2)
            MOV   CB_IIC_Display+5, #0           ;
            LCALL F_iicVerify5;    计算校验
            LCALL F_iic_Write6;  发送数据组
            LCALL F_iic_Stop


            LJMP MAIN1

;以上为演示程序部分




;********************************************
;***************子程序部分*******************
;********************************************




;/***********************************
;标号:F_iic_Write22
;功能:发送22字节子程序
;入口:要写的数据放在起始地址为CB_IIC_Display的数组中
;出口:无
;堆栈使用:6
;影响资源:Acc
;调用子程序:F_iic_Start..........2
;	   F_iic_SendBit........2
;	   F_iic_Tryresponsion..2
;其他: 如果那一个没写对(没响应)重写
;***********************************/
F_iic_Write22:
        PUSH B
        PUSH PSW
F_iic_Write22A:
	LCALL  F_iic_Start		 ;总线启动

        MOV R0,#CB_IIC_Display
        MOV    RB_IICWRCounter,#22
L_iic_Write22:
        mov    A,@R0
        LCALL  F_iic_SendBit
        LCALL  F_iic_Tryresponsion
        JNB    Fg_Ack,F_iic_Write22A    ;不应答重来
        INC R0
        DJNZ RB_IICWRCounter,L_iic_Write22

        POP PSW
        POP B

 	RET

⌨️ 快捷键说明

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