📄 zlg7290_avr.s
字号:
in R24,0x3f
st -y,R24
.dbline -1
.dbline 32
.dbline 33
ldi R24,1
ldi R25,0
sts _FlagINT+1,R25
sts _FlagINT,R24
.dbline -2
.dbline 34
L59:
ld R24,y+
out 0x3f,R24
ld R25,y+
ld R24,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e delay1 _delay1 fV
; x -> R20,R21
; y -> R22,R23
; t -> R16,R17
.even
_delay1::
xcall push_gset2
.dbline -1
.dbline 51
.dbline 53
movw R20,R16
xjmp L64
L61:
.dbline 54
ldi R22,110
ldi R23,0
xjmp L68
L65:
.dbline 54
L66:
.dbline 54
subi R22,1
sbci R23,0
L68:
.dbline 54
cpi R22,0
cpc R22,R23
brne L65
X2:
L62:
.dbline 53
subi R20,1
sbci R21,0
L64:
.dbline 53
cpi R20,0
cpc R20,R21
brne L61
X3:
.dbline -2
.dbline 55
L60:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r x 20 i
.dbsym r y 22 i
.dbsym r t 16 i
.dbend
.dbfunc e SystemInit _SystemInit fV
.even
_SystemInit::
.dbline -1
.dbline 62
.dbline 63
xcall _TWI_init
.dbline 64
xcall _interrupt_init
.dbline 65
ldi R16,30
ldi R17,0
.dbline -2
.dbline 66
L69:
.dbline 0 ; func end
xjmp _delay1
.dbend
.dbfunc e ClearAll _ClearAll fV
; x -> R20
.even
_ClearAll::
xcall push_gset1
sbiw R28,3
.dbline -1
.dbline 73
.dbline 75
clr R20
xjmp L74
L71:
.dbline 76
.dbline 77
ldi R24,31
std y+2,R24
clr R2
std y+0,R2
clr R18
mov R16,R20
xcall _ZLG7290_Download
.dbline 78
L72:
.dbline 75
inc R20
L74:
.dbline 75
cpi R20,8
brlo L71
.dbline -2
.dbline 79
L70:
adiw R28,3
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbend
.area lit(rom, con, rel)
L76:
.byte 238,62
.byte 156,'z
.byte 158,142
.byte 246,'n
.byte 32,'p
.byte 14,28
.byte 58,206
.byte 230,10
.area text(rom, con, rel)
.dbfile E:\PQ-1A\我的AVR\zlg7290\zlg7290_avr.c
.dbfunc e Test_DispBuf _Test_DispBuf fV
; DispDat -> y+0
; n -> R20
; dat -> R10
; reg -> R12
; x -> R22
.even
_Test_DispBuf::
xcall push_gset4
sbiw R28,16
.dbline -1
.dbline 86
.dbline 88
ldi R24,<L76
ldi R25,>L76
movw R30,R28
ldi R16,16
ldi R17,0
st -y,R31
st -y,R30
st -y,R25
st -y,R24
xcall asgncblk
.dbline 96
clr R20
xjmp L80
L77:
.dbline 97
.dbline 98
clr R22
xjmp L84
L81:
.dbline 99
.dbline 100
mov R24,R22
subi R24,240 ; addi 16
mov R12,R24
.dbline 101
movw R24,R28
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R10,z+0
.dbline 102
mov R18,R10
mov R16,R12
xcall _ZLG7290_WriteReg
.dbline 103
L82:
.dbline 98
inc R22
L84:
.dbline 98
cpi R22,8
brlo L81
.dbline 104
ldi R16,50
ldi R17,0
xcall _delay1
.dbline 105
L78:
.dbline 96
inc R20
L80:
.dbline 96
cpi R20,16
brlo L77
.dbline -2
.dbline 106
L75:
adiw R28,16
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym l DispDat 0 A[16:16]c
.dbsym r n 20 c
.dbsym r dat 10 c
.dbsym r reg 12 c
.dbsym r x 22 c
.dbend
.dbfunc e Test_Download _Test_Download fV
; f -> R20
; dp -> R22
; dat -> R10
; x -> R12
.even
_Test_Download::
xcall push_gset4
sbiw R28,3
.dbline -1
.dbline 113
.dbline 119
ldi R22,1
.dbline 120
clr R20
.dbline 121
ldi R24,8
mov R10,R24
.dbline 122
clr R12
xjmp L89
L86:
.dbline 123
.dbline 124
std y+2,R10
std y+0,R20
mov R18,R22
mov R16,R12
xcall _ZLG7290_Download
.dbline 125
L87:
.dbline 122
inc R12
L89:
.dbline 122
mov R24,R12
cpi R24,8
brlo L86
.dbline 126
ldi R16,100
ldi R17,0
xcall _delay1
.dbline 128
clr R22
.dbline 129
clr R20
.dbline 130
clr R10
xjmp L93
L90:
.dbline 131
.dbline 132
clr R12
xjmp L97
L94:
.dbline 133
.dbline 134
std y+2,R10
std y+0,R20
mov R18,R22
mov R16,R12
xcall _ZLG7290_Download
.dbline 135
L95:
.dbline 132
inc R12
L97:
.dbline 132
mov R24,R12
cpi R24,8
brlo L94
.dbline 136
ldi R16,50
ldi R17,0
xcall _delay1
.dbline 137
L91:
.dbline 130
inc R10
L93:
.dbline 130
mov R24,R10
cpi R24,32
brlo L90
.dbline -2
.dbline 138
L85:
adiw R28,3
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r f 20 c
.dbsym r dp 22 c
.dbsym r dat 10 c
.dbsym r x 12 c
.dbend
.dbfunc e Test_ScanNum _Test_ScanNum fV
; x -> R20
.even
_Test_ScanNum::
xcall push_gset1
sbiw R28,3
.dbline -1
.dbline 146
.dbline 148
clr R20
xjmp L102
L99:
.dbline 149
.dbline 150
ldi R24,8
std y+2,R24
clr R2
std y+0,R2
ldi R18,1
mov R16,R20
xcall _ZLG7290_Download
.dbline 151
L100:
.dbline 148
inc R20
L102:
.dbline 148
cpi R20,8
brlo L99
.dbline 152
ldi R16,100
ldi R17,0
xcall _delay1
.dbline 153
clr R20
xjmp L106
L103:
.dbline 154
.dbline 155
mov R18,R20
ldi R16,13
xcall _ZLG7290_WriteReg
.dbline 156
ldi R16,100
ldi R17,0
xcall _delay
.dbline 157
L104:
.dbline 153
inc R20
L106:
.dbline 153
cpi R20,8
brlo L103
.dbline -2
.dbline 158
L98:
adiw R28,3
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbend
.dbfunc e Test_Flash _Test_Flash fV
; dat -> R20
; x -> R22
.even
_Test_Flash::
xcall push_gset2
sbiw R28,3
.dbline -1
.dbline 165
.dbline 166
ldi R20,1
.dbline 169
clr R22
xjmp L111
L108:
.dbline 170
.dbline 171
std y+2,R22
clr R2
std y+0,R2
clr R18
mov R16,R22
xcall _ZLG7290_Download
.dbline 172
L109:
.dbline 169
inc R22
L111:
.dbline 169
cpi R22,8
brlo L108
.dbline 174
ldi R18,17
ldi R16,12
xcall _ZLG7290_WriteReg
.dbline 176
clr R22
xjmp L115
L112:
.dbline 177
.dbline 178
mov R18,R20
ldi R16,112
xcall _ZLG7290_cmd
.dbline 179
lsl R20
.dbline 180
ldi R16,300
ldi R17,1
xcall _delay1
.dbline 181
L113:
.dbline 176
inc R22
L115:
.dbline 176
cpi R22,8
brlo L112
.dbline 183
ldi R18,255
ldi R16,112
xcall _ZLG7290_cmd
.dbline 184
ldi R16,350
ldi R17,1
xcall _delay1
.dbline 186
clr R18
ldi R16,112
xcall _ZLG7290_cmd
.dbline 187
ldi R16,50
ldi R17,0
xcall _delay1
.dbline -2
.dbline 188
L107:
adiw R28,3
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r dat 20 c
.dbsym r x 22 c
.dbend
.dbfunc e Test_SegOnOff _Test_SegOnOff fV
; seg -> R20
.even
_Test_SegOnOff::
xcall push_gset1
.dbline -1
.dbline 195
; /*
; 函数:Test_SegOnOff()
; 功能:测试段寻址功能
; */
; void Test_SegOnOff()
; {
.dbline 197
; uchar seg;
; ClearAll();
xcall _ClearAll
.dbline 198
; delay1(100);
ldi R16,100
ldi R17,0
xcall _delay1
.dbline 199
; for ( seg=0; seg<64; seg++ )
clr R20
xjmp L120
L117:
.dbline 200
.dbline 201
ldi R18,1
mov R16,R20
xcall _ZLG7290_SegOnOff
.dbline 202
ldi R16,30
ldi R17,0
xcall _delay1
.dbline 203
L118:
.dbline 199
inc R20
L120:
.dbline 199
cpi R20,64
brlo L117
.dbline 204
; {
; ZLG7290_SegOnOff(seg,1);
; delay1(30);
; }
; delay1(100);
ldi R16,100
ldi R17,0
xcall _delay1
.dbline 205
; for ( seg=0; seg<64; seg++ )
clr R20
xjmp L124
L121:
.dbline 206
.dbline 207
clr R18
mov R16,R20
xcall _ZLG7290_SegOnOff
.dbline 208
ldi R16,30
ldi R17,0
xcall _delay1
.dbline 209
L122:
.dbline 205
inc R20
L124:
.dbline 205
cpi R20,64
brlo L121
.dbline 210
; {
; ZLG7290_SegOnOff(seg,0);
; delay1(30);
; }
; delay1(100);
ldi R16,100
ldi R17,0
xcall _delay1
.dbline -2
.dbline 211
; }
L116:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r seg 20 c
.dbend
.dbfunc e DispValue _DispValue fV
; d -> R22
; dat -> R10
; x -> R20
.even
_DispValue::
xcall push_gset3
mov R10,R18
mov R20,R16
sbiw R28,3
.dbline -1
.dbline 221
;
; /*
; 函数:DispValue()
; 功能:显示100以内的数值
; 参数:
; x:显示位置,取值0~6
; dat:要显示的数据,取值0~99
; */
; void DispValue(uchar x, uchar dat)
; {
.dbline 223
; uchar d;
; d = dat / 10;
ldi R17,10
mov R16,R10
xcall div8u
mov R22,R16
.dbline 224
; ZLG7290_Download(x,0,0,d);
std y+2,R22
clr R2
std y+0,R2
clr R18
mov R16,R20
xcall _ZLG7290_Download
.dbline 225
; d = dat - d * 10;
ldi R24,10
mul R24,R22
mov R22,R10
sub R22,R0
.dbline 226
; ZLG7290_Download(x+1,0,0,d);
std y+2,R22
clr R2
std y+0,R2
clr R18
mov R16,R20
subi R16,255 ; addi 1
xcall _ZLG7290_Download
.dbline -2
.dbline 227
; }
L125:
adiw R28,3
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r d 22 c
.dbsym r dat 10 c
.dbsym r x 20 c
.dbend
.dbfunc e DispHexValue _DispHexValue fV
; d -> R22
; dat -> R10
; x -> R20
.even
_DispHexValue::
xcall push_gset3
mov R10,R18
mov R20,R16
sbiw R28,3
.dbline -1
.dbline 237
;
; /*
; 函数:DispHexValue()
; 功能:以16进制方式显示数值
; 参数:
; x:显示位置,取值0~6
; dat:要显示的数据,取值0~255
; */
; void DispHexValue(uchar x, uchar dat)
; {
.dbline 239
; uchar d;
; d = dat / 16;
ldi R17,16
mov R16,R10
xcall div8u
mov R22,R16
.dbline 240
; ZLG7290_Download(x,0,0,d);
std y+2,R22
clr R2
std y+0,R2
clr R18
mov R16,R20
xcall _ZLG7290_Download
.dbline 241
; d = dat - d * 16;
ldi R24,16
mul R24,R22
mov R22,R10
sub R22,R0
.dbline 242
; ZLG7290_Download(x+1,0,0,d);
std y+2,R22
clr R2
std y+0,R2
clr R18
mov R16,R20
subi R16,255 ; addi 1
xcall _ZLG7290_Download
.dbline -2
.dbline 243
; }
L126:
adiw R28,3
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r d 22 c
.dbsym r dat 10 c
.dbsym r x 20 c
.dbend
.dbfunc e Test_Key _Test_Key fV
; FnKeyValue -> y+2
; RepeatCnt -> y+1
; KeyValue -> y+0
.even
_Test_Key::
sbiw R28,3
.dbline -1
.dbline 250
;
; /*
; 函数:Test_Key()
; 功能:测试按键功能
; */
; void Test_Key()
; {
.dbline 254
; uchar KeyValue;
; uchar RepeatCnt;
; uchar FnKeyValue;
; ClearAll();
xcall _ClearAll
.dbline 255
; for (;;)
L128:
.dbline 256
.dbline 257
lds R2,_FlagINT
lds R3,_FlagINT+1
tst R2
brne X4
tst R3
breq L128
X4:
.dbline 258
.dbline 260
clr R2
clr R3
sts _FlagINT+1,R3
sts _FlagINT,R2
.dbline 262
movw R18,R28
ldi R16,1
xcall _ZLG7290_ReadReg
.dbline 263
movw R18,R28
subi R18,255 ; offset = 1
sbci R19,255
ldi R16,2
xcall _ZLG7290_ReadReg
.dbline 264
movw R18,R28
subi R18,254 ; offset = 2
sbci R19,255
ldi R16,3
xcall _ZLG7290_ReadReg
.dbline 266
ldd R18,y+0
clr R16
xcall _DispValue
.dbline 267
ldd R18,y+1
ldi R16,3
xcall _DispHexValue
.dbline 268
ldd R18,y+2
ldi R16,6
xcall _DispHexValue
.dbline 269
.dbline 270
.dbline 255
.dbline 255
xjmp L128
X5:
.dbline -2
L127:
adiw R28,3
.dbline 0 ; func end
ret
.dbsym l FnKeyValue 2 c
.dbsym l RepeatCnt 1 c
.dbsym l KeyValue 0 c
.dbend
.dbfunc e main _main fV
; x -> R20
.even
_main::
sbiw R28,3
.dbline -1
.dbline 274
; {
; if ( FlagINT ) //如果有键按下
; {
; //清除中断标志
; FlagINT = 0;
; //读取键值、连击计数器值、功能键值
; ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
; ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);
; ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);
; //显示键值、连击计数器值、功能键值
; DispValue(0,KeyValue);
; DispHexValue(3,RepeatCnt);
; DispHexValue(6,FnKeyValue);
; }
; }
; }
;
; void main()
; {
.dbline 276
; uchar x;
; SystemInit(); //系统初始化
xcall _SystemInit
xjmp L136
L135:
.dbline 284
; //Test_DispBuf(); //测试直接写显存
; //Test_Download(); //测试下载数据
; //Test_ScanNum(); //测试不同扫描位数
; //Test_Flash(); //测试闪烁功能
; //Test_SegOnOff(); //测试段寻址功能
; //Test_Key(); //测试键盘功能
; while (1)
; {
.dbline 285
; for ( x=0; x<8; x++ )
clr R20
xjmp L141
L138:
.dbline 286
.dbline 287
ldi R24,5
std y+2,R24
clr R2
std y+0,R2
ldi R18,1
mov R16,R20
xcall _ZLG7290_Download
.dbline 288
L139:
.dbline 285
inc R20
L141:
.dbline 285
cpi R20,8
brlo L138
.dbline 289
; {
; ZLG7290_Download(x,1,0,5);
; }
; delay1(100);
ldi R16,100
ldi R17,0
xcall _delay1
.dbline 292
; //Test_Key();
; //ZLG7290_Download(0,0,0,4);
; for ( x=0; x<6; x++ )
clr R20
xjmp L145
L142:
.dbline 293
.dbline 294
mov R18,R20
ldi R16,13
xcall _ZLG7290_WriteReg
.dbline 295
ldi R16,100
ldi R17,0
xcall _delay
.dbline 296
L143:
.dbline 292
inc R20
L145:
.dbline 292
cpi R20,6
brlo L142
.dbline 297
L136:
.dbline 283
xjmp L135
X6:
.dbline -2
.dbline 298
; {
; ZLG7290_WriteReg(ZLG7290_ScanNum,x);
; delay(100);
; }
; }
; }
L134:
adiw R28,3
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -