📄 1.s
字号:
clr R2
out 0x1a,R2
.dbline 170
; PORTA=0x00;
out 0x1b,R2
L14:
.dbline 172
; do
; { EN_H;
.dbline 172
sbi 0x18,0
.dbline 173
; Lstate = PINA;
in R20,0x19
.dbline 174
; EN_L;
cbi 0x18,0
.dbline 175
L15:
.dbline 175
; }while(Lstate & 0x80);
sbrc R20,7
rjmp L14
.dbline 176
; DDRA=0xff;
ldi R24,255
out 0x1a,R24
.dbline 177
; DI_H;
sbi 0x18,2
.dbline 178
; RW_L;
cbi 0x18,1
.dbline 179
; DATA = Rdat;
out 0x1b,R16
.dbline 180
; EN_H;
sbi 0x18,0
.dbline 181
; EN_L;
cbi 0x18,0
.dbline -2
L13:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r Lstate 20 c
.dbsym r Rdat 16 c
.dbend
.dbfunc e LCD_INT _LCD_INT fV
.even
_LCD_INT::
.dbline -1
.dbline 187
; }
; //-----------------------------------------------------------------------------
; // LCD:Iniatlize(DIlcdsplay).
; //-----------------------------------------------------------------------------
; void LCD_INT(void)
; {
.dbline 188
; Wleft_Cmad(0xc0); // Left display start line;
ldi R16,192
xcall _Wleft_Cmad
.dbline 189
; Wrigt_Cmad(0xc0); // Right display start line;
ldi R16,192
xcall _Wrigt_Cmad
.dbline 190
; Wleft_Cmad(0x3f); // Left display On;
ldi R16,63
xcall _Wleft_Cmad
.dbline 191
; Wrigt_Cmad(0x3f); // Right display On;
ldi R16,63
xcall _Wrigt_Cmad
.dbline -2
L17:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_CLR _LCD_CLR fV
; adrPage -> R20
; adrLaw -> R22
.even
_LCD_CLR::
xcall push_gset2
.dbline -1
.dbline 197
; }
; //-----------------------------------------------------------------------------
; // LCD:Clear picture.
; //-----------------------------------------------------------------------------
; void LCD_CLR(void)
; {
.dbline 199
; unsigned char adrPage,adrLaw;
; for(adrPage = 0; adrPage < 8; adrPage++)
clr R20
xjmp L22
L19:
.dbline 200
; { Wleft_Cmad(adrPage | 0xb8);
.dbline 200
mov R16,R20
ori R16,184
xcall _Wleft_Cmad
.dbline 201
; Wrigt_Cmad(adrPage | 0xb8);
mov R16,R20
ori R16,184
xcall _Wrigt_Cmad
.dbline 202
; Wleft_Cmad(0x40);
ldi R16,64
xcall _Wleft_Cmad
.dbline 203
; Wrigt_Cmad(0x40);
ldi R16,64
xcall _Wrigt_Cmad
.dbline 204
; for(adrLaw = 0; adrLaw < 64; adrLaw++)
clr R22
xjmp L26
L23:
.dbline 205
.dbline 205
clr R16
xcall _Wleft_Data
.dbline 206
clr R16
xcall _Wrigt_Data
.dbline 207
L24:
.dbline 204
inc R22
L26:
.dbline 204
cpi R22,64
brlo L23
.dbline 208
L20:
.dbline 199
inc R20
L22:
.dbline 199
cpi R20,8
brlo L19
.dbline -2
L18:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r adrPage 20 c
.dbsym r adrLaw 22 c
.dbend
.dbfunc e WriteHZ _WriteHZ fV
; i -> R20
; left -> R22
; j -> R14
; dptr -> R10,R11
; ColSum -> R12
; adrColumn -> y+12
; adrPage -> y+10
; XH_HZ -> R20
.even
_WriteHZ::
st -y,r19
st -y,r18
xcall push_gset5
mov R20,R16
ldd R12,y+14
.dbline -1
.dbline 214
; { Wleft_Data(0x00);
; Wrigt_Data(0x00);
; }
; }
; }
; //-----------------------------------------------------------------------------
; // LCD:DIlcdsplay Chinese.
; //-----------------------------------------------------------------------------
; void WriteHZ(uchar XH_HZ,uchar adrPage,int adrColumn,uchar ColSum)
; {
.dbline 216
; unsigned int dptr; // dptr_adderss for HZ code.
; unsigned char left=0, i, j;
clr R22
.dbline 217
; dptr = XH_HZ * 32;
ldi R24,32
mul R24,R20
movw R10,R0
.dbline 218
; if((adrColumn-64) >= 0) left = 0; // left = 0:for right.
ldd R24,y+12
ldd R25,y+13
subi R24,64
sbci R25,0
cpi R24,0
ldi R30,0
cpc R25,R30
brlt L28
.dbline 218
xjmp L29
L28:
.dbline 219
; else if((adrColumn-64) < 0) left = 1; // left = 1:for left.
ldd R24,y+12
ldd R25,y+13
subi R24,64
sbci R25,0
cpi R24,0
ldi R30,0
cpc R25,R30
brge L30
.dbline 219
ldi R22,1
L30:
L29:
.dbline 220
; for(i=0; i<2; i++)
clr R20
xjmp L35
L32:
.dbline 221
; {
.dbline 222
; if(left == 0)
tst R22
brne L36
.dbline 223
; { Wrigt_Cmad(adrPage | 0xb8);
.dbline 223
ldd R16,y+10
ori R16,184
xcall _Wrigt_Cmad
.dbline 224
; Wrigt_Cmad(adrColumn | 0x40);
ldd R16,y+12
ldd R17,y+13
ori R16,64
xcall _Wrigt_Cmad
.dbline 225
; for(j=0; j< ColSum; j++)
clr R14
xjmp L41
L38:
.dbline 226
.dbline 227
ldi R24,<_HZK
ldi R25,>_HZK
movw R30,R10
add R30,R24
adc R31,R25
lpm R16,Z
xcall _Wrigt_Data
.dbline 228
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 229
L39:
.dbline 225
inc R14
L41:
.dbline 225
cp R14,R12
brlo L38
.dbline 230
; {
; Wrigt_Data(HZK[dptr]);
; dptr = dptr + 1;
; }
; }
L36:
.dbline 231
; if(left == 1)
cpi R22,1
brne L42
.dbline 232
; { Wleft_Cmad(adrPage | 0xb8);
.dbline 232
ldd R16,y+10
ori R16,184
xcall _Wleft_Cmad
.dbline 233
; Wleft_Cmad(adrColumn | 0x40);
ldd R16,y+12
ldd R17,y+13
ori R16,64
xcall _Wleft_Cmad
.dbline 234
clr R14
xjmp L47
L44:
.dbline 234
.dbline 235
ldi R24,<_HZK
ldi R25,>_HZK
movw R30,R10
add R30,R24
adc R31,R25
lpm R16,Z
xcall _Wleft_Data
.dbline 236
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 236
L45:
.dbline 234
inc R14
L47:
.dbline 234
; for(j=0; j< ColSum; j++) {
cp R14,R12
brlo L44
.dbline 237
; Wleft_Data(HZK[dptr]);
; dptr = dptr + 1; }
; }
L42:
.dbline 238
ldd R0,y+10
inc R0
std y+10,R0
.dbline 239
L33:
.dbline 220
inc R20
L35:
.dbline 220
cpi R20,2
brsh X0
xjmp L32
X0:
.dbline -2
L27:
xcall pop_gset5
adiw R28,2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r left 22 c
.dbsym r j 14 c
.dbsym r dptr 10 i
.dbsym r ColSum 12 c
.dbsym l adrColumn 12 I
.dbsym l adrPage 10 c
.dbsym r XH_HZ 20 c
.dbend
.dbfunc e WriteDG _WriteDG fV
; i -> R20
; left -> R22
; j -> R14
; dptr -> R10,R11
; adrColumn -> R12,R13
; adrPage -> y+10
; XH_Dig -> R20
.even
_WriteDG::
st -y,r19
st -y,r18
xcall push_gset5
mov R20,R16
ldd R12,y+12
ldd R13,y+13
.dbline -1
.dbline 245
; adrPage = adrPage + 1;
; }
; }
; //-----------------------------------------------------------------------------
; // LCD:DIlcdsplay ASCII.
; //-----------------------------------------------------------------------------
; void WriteDG(uchar XH_Dig,uchar adrPage,int adrColumn)
; {
.dbline 248
; unsigned int dptr; // dptr_adderss for Dig code.
; unsigned char left, i, j;
; dptr = XH_Dig * 16;
ldi R24,16
mul R24,R20
movw R10,R0
.dbline 249
; if(adrColumn-64 >= 0) left = 0; // left = 0:for right.
movw R24,R12
subi R24,64
sbci R25,0
cpi R24,0
ldi R30,0
cpc R25,R30
brlt L49
.dbline 249
clr R22
xjmp L50
L49:
.dbline 250
; else left = 1; // left = 1:for left.
ldi R22,1
L50:
.dbline 252
;
; for(i=0; i<2; i++)
clr R20
xjmp L54
L51:
.dbline 253
; {
.dbline 254
; if(left == 0)
tst R22
brne L55
.dbline 255
; { Wrigt_Cmad(adrPage | 0xb8);
.dbline 255
ldd R16,y+10
ori R16,184
xcall _Wrigt_Cmad
.dbline 256
; Wrigt_Cmad(adrColumn | 0x40);
mov R16,R12
ori R16,64
xcall _Wrigt_Cmad
.dbline 257
clr R14
xjmp L60
L57:
.dbline 257
.dbline 258
ldi R24,<_Dig
ldi R25,>_Dig
movw R30,R10
add R30,R24
adc R31,R25
lpm R16,Z
xcall _Wrigt_Data
.dbline 259
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 259
L58:
.dbline 257
inc R14
L60:
.dbline 257
; for(j=0; j< 8; j++) {
mov R24,R14
cpi R24,8
brlo L57
.dbline 260
; Wrigt_Data(Dig[dptr]);
; dptr = dptr + 1; }
; }
L55:
.dbline 261
; if(left == 1)
cpi R22,1
brne L61
.dbline 262
; { Wleft_Cmad(adrPage | 0xb8);
.dbline 262
ldd R16,y+10
ori R16,184
xcall _Wleft_Cmad
.dbline 263
; Wleft_Cmad(adrColumn | 0x40);
mov R16,R12
ori R16,64
xcall _Wleft_Cmad
.dbline 264
clr R14
xjmp L66
L63:
.dbline 264
.dbline 265
ldi R24,<_Dig
ldi R25,>_Dig
movw R30,R10
add R30,R24
adc R31,R25
lpm R16,Z
xcall _Wleft_Data
.dbline 266
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 266
L64:
.dbline 264
inc R14
L66:
.dbline 264
; for(j=0; j< 8; j++) {
mov R24,R14
cpi R24,8
brlo L63
.dbline 267
; Wleft_Data(Dig[dptr]);
; dptr = dptr + 1; }
; }
L61:
.dbline 268
ldd R0,y+10
inc R0
std y+10,R0
.dbline 269
L52:
.dbline 252
inc R20
L54:
.dbline 252
cpi R20,2
brsh X1
xjmp L51
X1:
.dbline -2
L48:
xcall pop_gset5
adiw R28,2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r left 22 c
.dbsym r j 14 c
.dbsym r dptr 10 i
.dbsym r adrColumn 12 I
.dbsym l adrPage 10 c
.dbsym r XH_Dig 20 c
.dbend
.dbfunc e delay_1ms _delay_1ms fV
; i -> R16,R17
.even
_delay_1ms::
.dbline -1
.dbline 274
; adrPage = adrPage + 1;
; }
; }
;
; #define xtal 4
; void delay_1ms(void)
; { unsigned int i;
.dbline 275
; for(i=1;i<(unsigned int)(xtal*143-2);i++)
ldi R16,1
ldi R17,0
xjmp L71
L68:
.dbline 276
L69:
.dbline 275
subi R16,255 ; offset = 1
sbci R17,255
L71:
.dbline 275
cpi R16,58
ldi R30,2
cpc R17,R30
brlo L68
.dbline -2
L67:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay_ms _delay_ms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_ms::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 279
; ;
; }
; void delay_ms(unsigned int n)
; {
.dbline 280
; unsigned int i=0;
clr R20
clr R21
xjmp L74
L73:
.dbline 282
.dbline 282
xcall _delay_1ms
.dbline 283
subi R20,255 ; offset = 1
sbci R21,255
.dbline 284
L74:
.dbline 281
; while(i<n)
cp R20,R22
cpc R21,R23
brlo L73
.dbline -2
L72:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e main _main fV
.even
_main::
sbiw R28,3
.dbline -1
.dbline 289
; {delay_1ms();
; i++;
; }
; }
;
;
; void main()
; {
.dbline 290
; PORTA = 0x00;
clr R2
out 0x1b,R2
.dbline 291
; DDRA = 0xFF;
ldi R24,255
out 0x1a,R24
.dbline 292
; DDRB = 0xff ;
out 0x17,R24
.dbline 293
; PORTB=0xff;
out 0x18,R24
.dbline 294
; PORTC = 0xff;
out 0x15,R24
.dbline 295
; DDRC = 0xFF;
out 0x14,R24
.dbline 296
; PORTC = 0xff;
out 0x15,R24
.dbline 297
; PORTD = 0xFF;
out 0x12,R24
.dbline 298
; LCD_INT();
xcall _LCD_INT
.dbline 299
; LCD_CLR();
xcall _LCD_CLR
.dbline 300
; WriteHZ(12, 0, 5, 64); // 氧电势
ldi R24,64
std y+2,R24
ldi R24,5
ldi R25,0
std y+1,R25
std y+0,R24
clr R18
ldi R16,12
xcall _WriteHZ
.dbline 301
; WriteHZ(17, 0, 108, 16); // mv
ldi R24,16
std y+2,R24
ldi R24,108
ldi R25,0
std y+1,R25
std y+0,R24
clr R18
ldi R16,17
xcall _WriteHZ
.dbline 302
; WriteHZ(0, 2, 0, 64); // 氧量
ldi R24,64
std y+2,R24
clr R2
clr R3
std y+1,R3
std y+0,R2
ldi R18,2
clr R16
xcall _WriteHZ
.dbline 303
; WriteDG(11, 2, 108); // %
ldi R24,108
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,2
ldi R16,11
xcall _WriteDG
.dbline 304
; WriteHZ(8, 4, 0, 64); // 热电势
ldi R24,64
std y+2,R24
clr R2
clr R3
std y+1,R3
std y+0,R2
ldi R18,4
ldi R16,8
xcall _WriteHZ
.dbline 305
; WriteHZ(17, 4, 108, 16); // mv
ldi R24,16
std y+2,R24
ldi R24,108
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,4
ldi R16,17
xcall _WriteHZ
.dbline 306
; WriteHZ(4, 6, 0, 64); // 温度
ldi R24,64
std y+2,R24
clr R2
clr R3
std y+1,R3
std y+0,R2
ldi R18,6
ldi R16,4
xcall _WriteHZ
.dbline 307
; WriteHZ(16, 6,108, 16); // C
ldi R24,16
std y+2,R24
ldi R24,108
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,6
ldi R16,16
xcall _WriteHZ
.dbline -2
L76:
adiw R28,3
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -