📄 test_pc10_main.lis
字号:
00A2 ;
00A2 ; void serial_send(unsigned char command){
00A2 .dbline 121
00A2 ; unsigned char i=0;
00A2 4427 clr R20
00A4 1AC0 xjmp L25
00A6 X0:
00A6 .dbline 122
00A6 ; while( i < char_len){
00A6 L27:
00A6 .dbline 123
00A6 L28:
00A6 .dbline 123
00A6 ; while ( !( UCSR1A & (1<<UDRE1)) );
00A6 20909B00 lds R2,155
00AA 25FE sbrs R2,5
00AC FCCF rjmp L27
00AE .dbline 124
00AE ; UCSR1B &= ~(1<<TXB81);
00AE 80919A00 lds R24,154
00B2 8E7F andi R24,254
00B4 80939A00 sts 154,R24
00B8 .dbline 125
00B8 ; if ( command & 0x01 )
00B8 00FF sbrs R16,0
00BA 05C0 rjmp L30
00BC .dbline 126
00BC ; UCSR1B |= (1<<TXB81);
00BC 80919A00 lds R24,154
00C0 8160 ori R24,1
00C2 80939A00 sts 154,R24
00C6 L30:
00C6 .dbline 127
00C6 80E0 ldi R24,<_send_buffer
00C8 90E0 ldi R25,>_send_buffer
00CA E42F mov R30,R20
00CC FF27 clr R31
00CE E80F add R30,R24
00D0 F91F adc R31,R25
00D2 2080 ldd R2,z+0
00D4 20929C00 sts 156,R2
00D8 .dbline 128
00D8 4395 inc R20
00DA .dbline 129
00DA L25:
00DA .dbline 122
00DA 20900000 lds R2,_char_len
00DE 4215 cp R20,R2
00E0 10F3 brlo L28
00E2 .dbline 131
00E2 ; UDR1 = send_buffer[i];
00E2 ; i++;
00E2 ; }
00E2 ;
00E2 ; char_len = 0 ;
00E2 2224 clr R2
00E4 20920000 sts _char_len,R2
00E8 .dbline 132
00E8 ; return;
00E8 .dbline -2
00E8 L23:
00E8 0E940000 xcall pop_gset1
00EC .dbline 0 ; func end
00EC 0895 ret
00EE .dbsym r i 20 c
00EE .dbsym r command 16 c
00EE .dbend
00EE .dbfunc e scanf_int _scanf_int fI
00EE ; i -> R16
.even
00EE _scanf_int::
00EE .dbline -1
00EE .dbline 137
00EE ; }
00EE ;
00EE ;
00EE ; int scanf_int(void)
00EE ; {
00EE .dbline 138
00EE ; unsigned char i=0;
00EE 0027 clr R16
00F0 1AC0 xjmp L34
00F2 X1:
00F2 .dbline 140
00F2 ;
00F2 ; while( i < 2){
00F2 L36:
00F2 .dbline 141
00F2 L37:
00F2 .dbline 141
00F2 20909B00 lds R2,155
00F6 27FE sbrs R2,7
00F8 FCCF rjmp L36
00FA .dbline 142
00FA 20909A00 lds R2,154
00FE 20920800 sts _rec0,R2
0102 .dbline 143
0102 20909C00 lds R2,156
0106 20920800 sts _rec0,R2
010A .dbline 144
010A 202E mov R2,R16
010C 3324 clr R3
010E E1E0 ldi R30,1
0110 F0E0 ldi R31,0
0112 E219 sub R30,R2
0114 F309 sbc R31,R3
0116 80E0 ldi R24,<_kk
0118 90E0 ldi R25,>_kk
011A E80F add R30,R24
011C F91F adc R31,R25
011E 20900800 lds R2,_rec0
0122 2082 std z+0,R2
0124 .dbline 145
0124 0395 inc R16
0126 .dbline 146
0126 L34:
0126 .dbline 140
0126 0230 cpi R16,2
0128 20F3 brlo L37
012A .dbline 147
012A ; while ( !(UCSR1A& (1<<RXC1)));
012A ; rec0 = UCSR1B;
012A ; rec0 = UDR1;
012A ; kk.half[1 - i] = rec0;
012A ; i++;
012A ; }
012A ; return kk.i1;
012A 00911D00 lds R16,_kk
012E 10911E00 lds R17,_kk+1
0132 .dbline -2
0132 L32:
0132 .dbline 0 ; func end
0132 0895 ret
0134 .dbsym r i 16 c
0134 .dbend
0134 .dbfunc e xy_set _xy_set fV
0134 ; address -> R20
0134 ; x -> R22
0134 ; y -> R10
0134 ; xy -> R20
.even
0134 _xy_set::
0134 0E940000 xcall push_gset3
0138 402F mov R20,R16
013A .dbline -1
013A .dbline 167
013A ; }
013A ; /*----------------------------------------------------------------------------
013A ; 0x01 //清屏,AC自动加1,光标归位,但并不改变设置
013A ; 0x02 //归位
013A ; 0x06 //自动加一
013A ; 0x04 //自动减一
013A ; 0x0f //开显示,开光标,光标闪烁
013A ; 0x0e //光标开
013A ; 0x0d //光标所在字符闪烁
013A ; 0x0c //光标关
013A ; 0x18 //光标,字符一起左移
013A ; 0x1c //光标,字符一起右移
013A ; 0x38 //8位数据宽度
013A ; LCD第一行显示寄存器地址:0X80-0X8f
013A ; LCD第二行显示寄存器地址:0XC0-0Xcf
013A ; LCD第三行显示寄存器地址:0x90-0x9f
013A ; LCD第四行显示寄存器地址:0xd0-0xdf
013A ; -----------------------------------------------------------------------------*/
013A ; void xy_set(unsigned char xy)
013A ; {
013A .dbline 169
013A ; unsigned char x,y,address;
013A ; x = xy;
013A 642F mov R22,R20
013C .dbline 170
013C ; x = x & 0x0f;
013C 6F70 andi R22,15
013E .dbline 171
013E ; y = xy;
013E A42E mov R10,R20
0140 .dbline 172
0140 ; y = y >> 4;
0140 8A2D mov R24,R10
0142 8295 swap R24
0144 8F70 andi R24,#0x0F
0146 A82E mov R10,R24
0148 .dbline 174
0148 ;
0148 ; if (y == 0)
0148 8823 tst R24
014A 19F4 brne L40
014C .dbline 175
014C ; address = 0x80 + x;
014C 462F mov R20,R22
014E 4058 subi R20,128 ; addi 128
0150 11C0 xjmp L41
0152 L40:
0152 .dbline 176
0152 ; else if(y == 1)
0152 8A2D mov R24,R10
0154 8130 cpi R24,1
0156 19F4 brne L42
0158 .dbline 177
0158 ; address = 0xc0 + x;
0158 462F mov R20,R22
015A 4054 subi R20,64 ; addi 192
015C 0BC0 xjmp L43
015E L42:
015E .dbline 178
015E ; else if(y == 2)
015E 8A2D mov R24,R10
0160 8230 cpi R24,2
0162 19F4 brne L44
0164 .dbline 179
0164 ; address = 0x90 + x;
0164 462F mov R20,R22
0166 4057 subi R20,112 ; addi 144
0168 05C0 xjmp L45
016A L44:
016A .dbline 180
016A ; else if(y == 3)
016A 8A2D mov R24,R10
016C 8330 cpi R24,3
016E 11F4 brne L46
0170 .dbline 181
0170 ; address = 0xd0 + x;
0170 462F mov R20,R22
0172 4053 subi R20,48 ; addi 208
0174 L46:
0174 L45:
0174 L43:
0174 L41:
0174 .dbline 183
0174 ;
0174 ; send_buffer[0] = address;
0174 40930900 sts _send_buffer,R20
0178 .dbline 185
0178 ;
0178 ; char_len = 1;
0178 81E0 ldi R24,1
017A 80930000 sts _char_len,R24
017E .dbline 186
017E ; serial_send(1);
017E 01E0 ldi R16,1
0180 8EDF xcall _serial_send
0182 .dbline 187
0182 ; return ;
0182 .dbline -2
0182 L39:
0182 0E940000 xcall pop_gset3
0186 .dbline 0 ; func end
0186 0895 ret
0188 .dbsym r address 20 c
0188 .dbsym r x 22 c
0188 .dbsym r y 10 c
0188 .dbsym r xy 20 c
0188 .dbend
0188 .dbfunc e init_lcd _init_lcd fV
.even
0188 _init_lcd::
0188 .dbline -1
0188 .dbline 191
0188 ; }
0188 ;
0188 ; void init_lcd ()
0188 ; {
0188 .dbline 192
0188 ; send_buffer[0] = 0x01;
0188 81E0 ldi R24,1
018A 80930900 sts _send_buffer,R24
018E .dbline 193
018E ; char_len = 1;
018E 80930000 sts _char_len,R24
0192 .dbline 194
0192 ; serial_send(1);
0192 01E0 ldi R16,1
0194 .dbline 195
0194 ; return ;
0194 .dbline -2
0194 L48:
0194 .dbline 0 ; func end
0194 84CF xjmp _serial_send
0196 .dbend
0196 .dbfunc e shift_r _shift_r fV
.even
0196 _shift_r::
0196 .dbline -1
0196 .dbline 199
0196 ; }
0196 ;
0196 ; void shift_r()
0196 ; {
0196 .dbline 200
0196 ; send_buffer[0] = 0x1c ;
0196 8CE1 ldi R24,28
0198 80930900 sts _send_buffer,R24
019C .dbline 201
019C ; char_len = 1;
019C 81E0 ldi R24,1
019E 80930000 sts _char_len,R24
01A2 .dbline 202
01A2 ; serial_send(1);
01A2 01E0 ldi R16,1
01A4 .dbline 203
01A4 ; return ;
01A4 .dbline -2
01A4 L49:
01A4 .dbline 0 ; func end
01A4 7CCF xjmp _serial_send
01A6 .dbend
01A6 .dbfunc e shift_l _shift_l fV
.even
01A6 _shift_l::
01A6 .dbline -1
01A6 .dbline 207
01A6 ; }
01A6 ;
01A6 ; void shift_l()
01A6 ; {
01A6 .dbline 208
01A6 ; send_buffer[0] = 0x18;
01A6 88E1 ldi R24,24
01A8 80930900 sts _send_buffer,R24
01AC .dbline 209
01AC ; char_len = 1;
01AC 81E0 ldi R24,1
01AE 80930000 sts _char_len,R24
01B2 .dbline 210
01B2 ; serial_send(1);
01B2 01E0 ldi R16,1
01B4 .dbline 211
01B4 ; return ;
01B4 .dbline -2
01B4 L50:
01B4 .dbline 0 ; func end
01B4 74CF xjmp _serial_send
01B6 .dbend
01B6 .dbfunc e printf_char _printf_char fV
01B6 ; s -> R20
.even
01B6 _printf_char::
01B6 0E940000 xcall push_gset1
01BA 402F mov R20,R16
01BC .dbline -1
01BC .dbline 213
01BC ; }
01BC ; void printf_char(char s){
01BC .dbline 215
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -