📄 ch452l_driver.s
字号:
.module ch452l_driver.c
.area text(rom, con, rel)
.dbfile ch452l_driver.c
.dbfunc e Init_Ch452lport _Init_Ch452lport fV
.even
_Init_Ch452lport::
.dbline -1
.dbline 60
; #include<iom8v.h>
; #include<macros.h>
; #include"delay.h"
;
; /************************************************************************
; *说明:运行与CH452L的4线模式,MCU使用ATMEGA8L,MCU与CH452L引脚连接如下:
; LOAD PC0
; DCLK PC1
; DIN PC2
; DOUT PC3
; LOAD,DCLK,DIN都为输出,DOUT为输入,若要使用其它IO口,只需更改如下宏定义即可
; ***********************************************************************/
; #define PC0 0
; #define PC1 1
; #define PC2 2
; #define PC3 3
; //#define LOAD_IN DDRC=~BIT(PC0)
; #define LOAD_OUT DDRC|=BIT(PC0)
; #define LOAD_OUT0 PORTC=~BIT(PC0)
; #define LOAD_OUT1 PORTC|=BIT(PC0)
; //#define DCLK_IN DDRC=~BIT(PC1)
; #define DCLK_OUT DDRC|=BIT(PC1)
; #define DCLK_OUT0 PORTC=~BIT(PC1)
; #define DCLK_OUT1 PORTC|=BIT(PC1)
; //#define DIN_IN DDRC=~BIT(PC2)
; #define DIN_OUT DDRC|=BIT(PC2)
; #define DIN_OUT0 PORTC=~BIT(PC2)
; #define DIN_OUT1 PORTC|=BIT(PC2)
; #define DOUT_IN DDRC=~BIT(PC3)
; //#define DOUT_OUT DDRC|=BIT(PC3)
; #define DOUT_OUT0 PORTC=~BIT(PC3)
; #define DOUT_OUT1 PORTC|=BIT(PC3)
;
; /*************************************************************************
; *宏定义CH452L系统命令
; *************************************************************************/
; #define CH452L_RESET 0x0001 //CH452L初始化命令
; #define CONFIG_SYSTEM 0x0400 //配置系统参数
; #define CONFIG_DISPLAY 0x0500 //配置显示参数
;
; /*************************************************************************
; *宏定义CH452L加载数据DIG7~DIG0
; *************************************************************************/
; #define CH452L_DIG7 0x0f00
; #define CH452L_DIG6 0x0e00
; #define CH452L_DIG5 0x0d00
; #define CH452L_DIG4 0x0c00
; #define CH452L_DIG3 0x0b00
; #define CH452L_DIG2 0x0a00
; #define CH452L_DIG1 0x0900
; #define CH452L_DIG0 0x0800
;
; /**************************************************************************
; *函数名:初始化CH452L端口
; *函数功能:LOAD,DCLK,DIN都为输出,DOUT为输入
; *入口参数:无
; *出口参数:无
; **************************************************************************/
; void Init_Ch452lport(void)
; {
.dbline 61
; LOAD_OUT;
sbi 0x14,0
.dbline 62
; DCLK_OUT;
sbi 0x14,1
.dbline 63
; DIN_OUT;
sbi 0x14,2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Ch452l_Writecommand _Ch452l_Writecommand fV
; i -> R20
; command -> R22,R23
.even
_Ch452l_Writecommand::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 74
;
; }
;
; /**************************************************************************
; *函数名称:向CH452L写入命令函数
; *函数功能:
; *入口参数:定义一无符号整型变量存储12字节的命令字。
; *出口参数:无
; ***************************************************************************/
; void Ch452l_Writecommand(unsigned int command)
; {
.dbline 76
; unsigned char i;
; LOAD_OUT0;
ldi R24,254
out 0x15,R24
.dbline 77
; for(i=0;i<12;i++)
clr R20
rjmp L6
L3:
.dbline 78
; {
.dbline 79
; DCLK_OUT0;
ldi R24,253
out 0x15,R24
.dbline 80
; if(command&1)
sbrs R22,0
rjmp L7
.dbline 81
; {
.dbline 82
; DIN_OUT1;
sbi 0x15,2
.dbline 83
; }
rjmp L8
L7:
.dbline 85
; else
; {
.dbline 86
; DIN_OUT0;
ldi R24,251
out 0x15,R24
.dbline 87
; }
L8:
.dbline 88
sbi 0x15,1
.dbline 89
lsr R23
ror R22
.dbline 90
L4:
.dbline 77
inc R20
L6:
.dbline 77
cpi R20,12
brlo L3
.dbline 91
; DCLK_OUT1;
; command=command>>1;
; }
; LOAD_OUT1; //LOAD上升沿加载一帧数据
sbi 0x15,0
.dbline 92
; Delay_Nus(300); //延时
ldi R16,300
ldi R17,1
rcall _Delay_Nus
.dbline -2
L2:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r command 22 i
.dbend
.dbfunc e Init_Ch452lsystem _Init_Ch452lsystem fV
.even
_Init_Ch452lsystem::
.dbline -1
.dbline 102
; }
;
; /**************************************************************************
; *函数名:初始化CH452L系统
; *函数功能:扫描极限为8个数码管
; *入口参数:无
; *出口参数:无
; **************************************************************************/
; void Init_Ch452lsystem(void)
; {
.dbline 103
; Ch452l_Writecommand(CH452L_RESET);//芯片复位
ldi R16,1
ldi R17,0
rcall _Ch452l_Writecommand
.dbline 104
; Ch452l_Writecommand(CONFIG_DISPLAY|0x00f0);//8为显示,BCD译码
ldi R16,1520
ldi R17,5
rcall _Ch452l_Writecommand
.dbline 105
; Ch452l_Writecommand(CONFIG_SYSTEM|1);//开启显示
ldi R16,1025
ldi R17,4
rcall _Ch452l_Writecommand
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -