📄 hd61202.s
字号:
.byte 48,48
.byte 24,0
.byte 0,0
.byte 128,160
.byte 176,176
.byte 144,208
.byte 208,208
.byte 176,176
.byte 128,0
.byte 0,0
.byte 0,1
.byte 1,1
.byte 17,49
.byte 48,48
.byte 31,15
.byte 1,1
.byte 1,1
.byte 3,0
.byte 0,128
.byte 64,96
.byte 224,240
.byte 'P,128
.byte 160,32
.byte 64,240
.byte 0,0
.byte 0,0
.byte 0,4
.byte 6,3
.byte 63,63
.byte 3,4
.byte 2,2
.byte 2,63
.byte 2,2
.byte 6,2
.byte 0,0
.byte 64,64
.byte 240,208
.byte 64,64
.byte 192,240
.byte 240,192
.byte 64,0
.byte 0,0
.byte 0,16
.byte 18,17
.byte 31,15
.byte 17,18
.byte 10,10
.byte 4,11
.byte 24,24
.byte 16,0
.byte 0,0
.byte 0,0
.byte 0,252
.byte 254,2
.byte 2,30
.byte 30,16
.byte 16,16
.byte 240,224
.byte 'x,'x
.byte 'H,'H
.byte 'H,'O
.byte 'O,64
.byte 64,'O
.byte 'O,'I
.byte 'I,'I
.byte 'I,'x
.byte 0,220
.byte 254,34
.byte 38,38
.byte 126,254
.byte 194,226
.byte 166,164
.byte 164,36
.byte 228,252
.byte 0,'p
.byte 249,143
.byte 135,243
.byte 255,205
.byte 157,191
.byte 166,190
.byte 187,129
.byte 249,127
.byte 0,238
.byte 254,50
.byte 54,126
.byte 250,242
.byte 18,18
.byte 'B,'B
.byte 'R,18
.byte 242,254
.byte 0,'p
.byte 255,255
.byte 255,143
.byte 255,255
.byte 252,252
.byte 157,153
.byte 253,228
.byte 223,127
.byte 0,248
.byte 252,4
.byte 'D,'D
.byte 'F,6
.byte 2,'F
.byte 'F,'D
.byte 4,252
.byte 248,0
.byte 0,15
.byte 31,16
.byte 17,17
.byte 241,240
.byte 144,145
.byte 145,157
.byte 140,135
.byte 207,248
.byte 128,192
.byte 94,94
.byte 'R,'R
.byte 'r,'r
.byte 242,130
.byte 194,'b
.byte 'r,94
.byte 204,192
.byte 7,7
.byte 4,4
.byte 252,252
.byte 140,140
.byte 128,252
.byte 124,4
.byte 4,4
.byte 7,7
.byte 0,254
.byte 254,18
.byte 2,130
.byte 154,254
.byte 'f,34
.byte 'f,254
.byte 186,2
.byte 254,254
.byte 0,30
.byte 127,241
.byte 135,143
.byte 248,127
.byte 23,18
.byte 242,243
.byte 129,128
.byte 241,255
.byte 48,'x
.byte 206,206
.byte 2,94
.byte 254,252
.byte 'F,'F
.byte 2,2
.byte 'F,'D
.byte 252,252
.byte 'c,255
.byte 221,136
.byte 128,252
.byte 255,159
.byte 140,192
.byte 'B,'B
.byte 192,140
.byte 223,243
.dbfile D:\DISP\Hz.h
.dbsym e Hzk _Hzk A[2080:2080]kc
_Ezk::
.byte 0,0
.byte 0,192
.byte 192,0
.byte 0,0
.byte 0,0
.byte 0,48
.byte 48,0
.byte 0,0
.byte 0,0
.byte 192,56
.byte 224,0
.byte 0,0
.byte 32,60
.byte 35,2
.byte 2,39
.byte 56,32
.byte 8,248
.byte 136,136
.byte 136,'p
.byte 0,0
.byte 32,63
.byte 32,32
.byte 32,17
.byte 14,0
.byte 192,48
.byte 8,8
.byte 8,8
.byte 56,0
.byte 7,24
.byte 32,32
.byte 32,16
.byte 8,0
.byte 8,248
.byte 8,8
.byte 8,16
.byte 224,0
.byte 32,63
.byte 32,32
.byte 32,16
.byte 15,0
.byte 8,248
.byte 136,136
.byte 232,8
.byte 16,0
.byte 32,63
.byte 32,32
.byte 35,32
.byte 24,0
.byte 8,248
.byte 136,136
.byte 232,8
.byte 16,0
.byte 32,63
.byte 32,0
.byte 3,0
.byte 0,0
.byte 192,48
.byte 8,8
.byte 8,56
.byte 0,0
.byte 7,24
.byte 32,32
.byte 34,30
.byte 2,0
.byte 8,248
.byte 8,0
.byte 0,8
.byte 248,8
.byte 32,63
.byte 33,1
.byte 1,33
.byte 63,32
.byte 0,8
.byte 8,248
.byte 8,8
.byte 0,0
.byte 0,32
.byte 32,63
.byte 32,32
.byte 0,0
.byte 0,0
.byte 8,8
.byte 248,8
.byte 8,0
.byte 192,128
.byte 128,128
.byte 127,0
.byte 0,0
.byte 8,248
.byte 136,192
.byte 40,24
.byte 8,0
.byte 32,63
.byte 32,1
.byte 38,56
.byte 32,0
.byte 8,248
.byte 8,0
.byte 0,0
.byte 0,0
.byte 32,63
.byte 32,32
.byte 32,32
.byte 48,0
.byte 8,248
.byte 248,0
.byte 248,248
.byte 8,0
.byte 32,63
.byte 0,63
.byte 0,63
.byte 32,0
.byte 8,248
.byte 48,192
.byte 0,8
.byte 248,8
.byte 32,63
.byte 32,0
.byte 7,24
.byte 63,0
.byte 224,16
.byte 8,8
.byte 8,16
.byte 224,0
.byte 15,16
.byte 32,32
.byte 32,16
.byte 15,0
.byte 8,248
.byte 8,8
.byte 8,8
.byte 240,0
.byte 32,63
.byte 33,1
.byte 1,1
.byte 0,0
.byte 224,16
.byte 8,8
.byte 8,16
.byte 224,0
.byte 15,24
.byte 36,36
.byte 56,'P
.byte 'O,0
.byte 8,248
.byte 136,136
.byte 136,136
.byte 'p,0
.byte 32,63
.byte 32,0
.byte 3,12
.byte 48,32
.byte 0,'p
.byte 136,8
.byte 8,8
.byte 56,0
.byte 0,56
.byte 32,33
.byte 33,34
.byte 28,0
.byte 24,8
.byte 8,248
.byte 8,8
.byte 24,0
.byte 0,0
.byte 32,63
.byte 32,0
.byte 0,0
.byte 8,248
.byte 8,0
.byte 0,8
.byte 248,8
.byte 0,31
.byte 32,32
.byte 32,32
.byte 31,0
.byte 8,'x
.byte 136,0
.byte 0,200
.byte 56,8
.byte 0,0
.byte 7,56
.byte 14,1
.byte 0,0
.byte 248,8
.byte 0,248
.byte 0,8
.byte 248,0
.byte 3,60
.byte 7,0
.byte 7,60
.byte 3,0
.byte 8,24
.byte 'h,128
.byte 128,'h
.byte 24,8
.byte 32,48
.byte 44,3
.byte 3,44
.byte 48,32
.byte 8,56
.byte 200,0
.byte 200,56
.byte 8,0
.byte 0,0
.byte 32,63
.byte 32,0
.byte 0,0
.byte 16,8
.byte 8,8
.byte 200,56
.byte 8,0
.byte 32,56
.byte 38,33
.byte 32,32
.byte 24,0
.dbsym e Ezk _Ezk A[432:432]kc
.area text(rom, con, rel)
.dbfile D:\DISP\Hz.h
.dbfile D:\DISP\HD61202.c
.dbfunc e LCD_NOP _LCD_NOP fV
; i -> R16
.even
_LCD_NOP::
.dbline -1
.dbline 33
;
;
; //关于12864的程序(ATMage64/HD61202)
;
;
; //主程序:
;
; /************************************************************
; LCD采用HD61202,192x64
; 控制单片机ATMage64 8MHz
; ************************************************************/
;
; #include <iom64v.h>
; #include <macros.h>
; //#include <delay.h>
; #include <stdio.h>
; #include <D:\DISP\Hz.h>
;
; #define BIT(x) (1 << (x))
;
;
; /*LCD引脚定义 PA0-7对应LCD DB0-DB7*/
; #define CS1 0
; #define CS2 1
; #define CS3 2
; #define E 3
; #define RW 4
; #define RS 5
; #define LCD_LIGHT 6
;
; //===================
; void LCD_NOP(void)
; {
.dbline 35
clr R16
xjmp L5
L2:
.dbline 35
L3:
.dbline 35
inc R16
L5:
.dbline 35
; unsigned char i;
; for(i=0;i<50;i++);
cpi R16,50
brlo L2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.dbfunc e Delay _Delay fV
; j -> R20,R21
; i -> R22,R23
; x -> R16,R17
.even
_Delay::
xcall push_gset2
.dbline -1
.dbline 40
; }
;
; //===================
; void Delay(int x)
; {
.dbline 42
; int i,j;
; for(j=0;j<x;j++)
clr R20
clr R21
xjmp L10
L7:
.dbline 43
; {
.dbline 44
clr R22
clr R23
L11:
.dbline 44
L12:
.dbline 44
subi R22,255 ; offset = 1
sbci R23,255
.dbline 44
cpi R22,250
ldi R30,0
cpc R23,R30
brlt L11
.dbline 45
L8:
.dbline 42
subi R20,255 ; offset = 1
sbci R21,255
L10:
.dbline 42
cp R20,R16
cpc R21,R17
brlt L7
.dbline -2
L6:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r j 20 I
.dbsym r i 22 I
.dbsym r x 16 I
.dbend
.dbfunc e LCD_Write_ComL _LCD_Write_ComL fV
; x -> R20
.even
_LCD_Write_ComL::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 52
; for(i=0;i<250;i++);
; }
; }
;
; //===================
; //LCD左半屏写命令字
; //===================
; void LCD_Write_ComL(unsigned char x)
; {
.dbline 53
; PORTC&=~BIT(CS1);
cbi 0x15,0
.dbline 54
; PORTC|=BIT(CS2);
sbi 0x15,1
.dbline 55
; LCD_NOP();
xcall _LCD_NOP
.dbline 56
; PORTC&=~BIT(RS);
cbi 0x15,5
.dbline 57
; PORTC|=BIT(E);
sbi 0x15,3
.dbline 58
; LCD_NOP();
xcall _LCD_NOP
.dbline 59
; PORTC&=~BIT(RW);
cbi 0x15,4
.dbline 60
; PORTA=x;
out 0x1b,R20
.dbline 61
; PORTC|=BIT(E);
sbi 0x15,3
.dbline 62
; PORTC&=~BIT(E);
cbi 0x15,3
.dbline 63
; PORTC|=BIT(CS1);
sbi 0x15,0
.dbline 64
; PORTC|=BIT(CS2);
sbi 0x15,1
.dbline -2
L15:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbend
.dbfunc e LCD_Write_DatL _LCD_Write_DatL fV
; x -> R20
.even
_LCD_Write_DatL::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 71
; }
;
; //===================
; //LCD左半屏写数据
; //===================
; void LCD_Write_DatL(unsigned char x)
; {
.dbline 72
; PORTC&=~BIT(CS1);
cbi 0x15,0
.dbline 73
; PORTC|=BIT(CS2);
sbi 0x15,1
.dbline 74
; LCD_NOP();
xcall _LCD_NOP
.dbline 75
; PORTC&=~BIT(RS);
cbi 0x15,5
.dbline 76
; PORTC|=BIT(E);
sbi 0x15,3
.dbline 77
; LCD_NOP();
xcall _LCD_NOP
.dbline 78
; PORTC|=BIT(RS);
sbi 0x15,5
.dbline 79
; PORTC&=~BIT(RW);
cbi 0x15,4
.dbline 80
; PORTA=x;
out 0x1b,R20
.dbline 81
; PORTC|=BIT(E);
sbi 0x15,3
.dbline 82
; PORTC&=~BIT(E);
cbi 0x15,3
.dbline 83
; PORTC|=BIT(CS1);
sbi 0x15,0
.dbline 84
; PORTC|=BIT(CS2);
sbi 0x15,1
.dbline -2
L16:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbend
.dbfunc e LCD_Write_ComR _LCD_Write_ComR fV
; x -> R20
.even
_LCD_Write_ComR::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 91
; }
;
; //===================
; //LCD右半屏写命令字
; //===================
; void LCD_Write_ComR(unsigned char x)
; {
.dbline 92
; PORTC|=BIT(CS1);
sbi 0x15,0
.dbline 93
; PORTC&=~BIT(CS2);
cbi 0x15,1
.dbline 94
; LCD_NOP();
xcall _LCD_NOP
.dbline 95
; PORTC&=~BIT(RS);
cbi 0x15,5
.dbline 96
; PORTC|=BIT(E);
sbi 0x15,3
.dbline 97
; LCD_NOP();
xcall _LCD_NOP
.dbline 98
; PORTC&=~BIT(RW);
cbi 0x15,4
.dbline 99
; PORTA=x;
out 0x1b,R20
.dbline 100
; PORTC|=BIT(E);
sbi 0x15,3
.dbline 101
; PORTC&=~BIT(E);
cbi 0x15,3
.dbline 102
; PORTC|=BIT(CS1);
sbi 0x15,0
.dbline 103
; PORTC|=BIT(CS2);
sbi 0x15,1
.dbline -2
L17:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbend
.dbfunc e LCD_Write_DatR _LCD_Write_DatR fV
; x -> R20
.even
_LCD_Write_DatR::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 110
; }
;
; //===================
; //LCD右半屏写数据
; //===================
; void LCD_Write_DatR(unsigned char x)
; {
.dbline 111
; PORTC|=BIT(CS1);
sbi 0x15,0
.dbline 112
; PORTC&=~BIT(CS2);
cbi 0x15,1
.dbline 113
; LCD_NOP();
xcall _LCD_NOP
.dbline 114
; PORTC&=~BIT(RS);
cbi 0x15,5
.dbline 115
; PORTC|=BIT(E);
sbi 0x15,3
.dbline 116
; LCD_NOP();
xcall _LCD_NOP
.dbline 117
; PORTC|=BIT(RS);
sbi 0x15,5
.dbline 118
; PORTC&=~BIT(RW);
cbi 0x15,4
.dbline 119
; PORTA=x;
out 0x1b,R20
.dbline 120
; PORTC|=BIT(E);
sbi 0x15,3
.dbline 121
; PORTC&=~BIT(E);
cbi 0x15,3
.dbline 122
; PORTC|=BIT(CS1);
sbi 0x15,0
.dbline 123
; PORTC|=BIT(CS2);
sbi 0x15,1
.dbline -2
L18:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbend
.dbfunc e LCD_Init _LCD_Init fV
.even
_LCD_Init::
.dbline -1
.dbline 128
; }
;
; //LCD初始化
; void LCD_Init(void)
; {
.dbline 129
; LCD_Write_ComL(0x3e); LCD_Write_ComR(0x3e); //关闭显示器
ldi R16,62
xcall _LCD_Write_ComL
.dbline 129
ldi R16,62
xcall _LCD_Write_ComR
.dbline 130
; LCD_Write_ComL(0x3f); LCD_Write_ComR(0x3f); //打开显示器
ldi R16,63
xcall _LCD_Write_ComL
.dbline 130
ldi R16,63
xcall _LCD_Write_ComR
.dbline 131
; LCD_Write_ComL(0xc0); LCD_Write_ComR(0xc0); //设置左右半屏起始行,从0行开始
ldi R16,192
xcall _LCD_Write_ComL
.dbline 131
ldi R16,192
xcall _LCD_Write_ComR
.dbline -2
L19:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_Clr _LCD_Clr fV
; j -> R20
; i -> R22
.even
_LCD_Clr::
xcall push_gset2
.dbline -1
.dbline 137
; }
;
;
; //LCD清屏
; void LCD_Clr(void)
; {
.dbline 140
; unsigned char i,j;
;
; for(j=0;j<8;j++)
clr R20
xjmp L24
L21:
.dbline 141
; {
.dbline 142
; LCD_Write_ComL(0xb8|j); //左半屏页设置指令
mov R16,R20
ori R16,184
xcall _LCD_Write_ComL
.dbline 143
; LCD_Write_ComL(0x40); //左半屏列地址设置指令
ldi R16,64
xcall _LCD_Write_ComL
.dbline 144
; LCD_Write_ComR(0xb8|j); //右半屏页设置指令
mov R16,R20
ori R16,184
xcall _LCD_Write_ComR
.dbline 145
; LCD_Write_ComR(0x40); //右半屏列地址设置指令
ldi R16,64
xcall _LCD_Write_ComR
.dbline 146
; for(i=0; i<64; i++)
clr R22
xjmp L28
L25:
.dbline 147
.dbline 148
clr R16
xcall _LCD_Write_DatL
.dbline 149
clr R16
xcall _LCD_Write_DatR
.dbline 150
L26:
.dbline 146
inc R22
L28:
.dbline 146
cpi R22,64
brlo L25
.dbline 151
L22:
.dbline 140
inc R20
L24:
.dbline 140
cpi R20,8
brlo L21
.dbline -2
L20:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 22 c
.dbend
.dbfunc e LCD_WrCHr8x16 _LCD_WrCHr8x16 fV
; chr_m -> R20,R21
; i -> R22
; chrx -> y+8
; y -> R10
; x -> R12
.even
_LCD_WrCHr8x16::
xcall push_gset4
mov R10,R18
mov R12,R16
.dbline -1
.dbline 159
; {
; LCD_Write_DatL(0x00); //左半屏写0;
; LCD_Write_DatR(0x00); //右半屏写0;
; }
; }
; }
;
; //====================================================================
; //功能: 显示8x16字符,位置按8x8一个点来定
; // x:行坐标(x=(0--8)) y:列坐标(y=0--15) chrx:显示字符
; //====================================================================
; void LCD_WrCHr8x16(unsigned char x,unsigned char y,unsigned char chrx)
; {
.dbline 162
; unsigned char i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -