📄 avr320240.lis
字号:
00B8 482F mov R20,R24
00BA 4150 subi R20,1
00BC .dbline 146
00BC ; WriteCommand( CsrDirR );
00BC 0CE4 ldi R16,76
00BE 5CD0 xcall _WriteCommand
00C0 .dbline 147
00C0 ; WriteCommand( CsrW );
00C0 06E4 ldi R16,70
00C2 5AD0 xcall _WriteCommand
00C4 .dbline 148
00C4 ; WriteData(C_L); //CSRL
00C4 0C2D mov R16,R12
00C6 63D0 xcall _WriteData
00C8 .dbline 149
00C8 ; WriteData(C_H); //CSRH
00C8 0A2D mov R16,R10
00CA 61D0 xcall _WriteData
00CC .dbline 150
00CC ; WriteCommand( mWrite );
00CC 02E4 ldi R16,66
00CE 54D0 xcall _WriteCommand
00D0 .dbline 151
00D0 ; WriteData( (1<<shift) );
00D0 01E0 ldi R16,1
00D2 142F mov R17,R20
00D4 0E940000 xcall lsl8
00D8 5AD0 xcall _WriteData
00DA .dbline -2
00DA L11:
00DA .dbline 0 ; func end
00DA 2496 adiw R28,4
00DC 0C940000 xjmp pop_xgset303C
00E0 .dbsym r C_H 10 c
00E0 .dbsym r C_L 12 c
00E0 .dbsym l dot_sum 0 l
00E0 .dbsym r shift 20 c
00E0 .dbsym r Ry 10 i
00E0 .dbsym r Rx 20 i
00E0 .dbend
00E0 .dbfunc e LCD_put8pixel _LCD_put8pixel fV
00E0 ; C_H -> R10
00E0 ; C_L -> R12
00E0 ; dot_sum -> y+0
00E0 ; dat -> y+8
00E0 ; Ry -> R12,R13
00E0 ; Rx -> R10,R11
.even
00E0 _LCD_put8pixel::
00E0 0E940000 xcall push_xgset003C
00E4 6901 movw R12,R18
00E6 5801 movw R10,R16
00E8 2497 sbiw R28,4
00EA .dbline -1
00EA .dbline 156
00EA ; }
00EA ;
00EA ;
00EA ; void LCD_put8pixel(Uint Rx,Uint Ry,Uchar dat) //水平8点 x:0-312;y:0-239
00EA ; {
00EA .dbline 159
00EA ; unsigned long dot_sum;
00EA ; Uchar C_L,C_H;
00EA ; dot_sum=Ry*40+(Rx/8);
00EA 08E2 ldi R16,40
00EC 10E0 ldi R17,0
00EE 9601 movw R18,R12
00F0 0E940000 xcall empy16s
00F4 1801 movw R2,R16
00F6 2501 movw R4,R10
00F8 5694 lsr R5
00FA 4794 ror R4
00FC 5694 lsr R5
00FE 4794 ror R4
0100 5694 lsr R5
0102 4794 ror R4
0104 240C add R2,R4
0106 351C adc R3,R5
0108 4424 clr R4
010A 5524 clr R5
010C 2882 std y+0,R2
010E 3982 std y+1,R3
0110 4A82 std y+2,R4
0112 5B82 std y+3,R5
0114 .dbline 160
0114 ; C_L=(Uchar)dot_sum;
0114 2880 ldd R2,y+0
0116 3980 ldd R3,y+1
0118 4A80 ldd R4,y+2
011A 5B80 ldd R5,y+3
011C C22C mov R12,R2
011E .dbline 161
011E ; C_H=(Uchar)(dot_sum>>8);
011E 88E0 ldi R24,8
0120 90E0 ldi R25,0
0122 8101 movw R16,R2
0124 9201 movw R18,R4
0126 8A93 st -y,R24
0128 0E940000 xcall lsr32
012C A02E mov R10,R16
012E .dbline 162
012E ; WriteCommand( CsrDirR );
012E 0CE4 ldi R16,76
0130 23D0 xcall _WriteCommand
0132 .dbline 163
0132 ; WriteCommand( CsrW );
0132 06E4 ldi R16,70
0134 21D0 xcall _WriteCommand
0136 .dbline 164
0136 ; WriteData(C_L); //CSRL
0136 0C2D mov R16,R12
0138 2AD0 xcall _WriteData
013A .dbline 165
013A ; WriteData(C_H); //CSRH
013A 0A2D mov R16,R10
013C 28D0 xcall _WriteData
013E .dbline 166
013E ; WriteCommand( mWrite );
013E 02E4 ldi R16,66
0140 1BD0 xcall _WriteCommand
0142 .dbline 167
0142 ; WriteData(dat);
0142 0885 ldd R16,y+8
0144 24D0 xcall _WriteData
0146 .dbline -2
0146 L12:
0146 .dbline 0 ; func end
0146 2496 adiw R28,4
0148 0C940000 xjmp pop_xgset003C
014C .dbsym r C_H 10 c
014C .dbsym r C_L 12 c
014C .dbsym l dot_sum 0 l
014C .dbsym l dat 8 c
014C .dbsym r Ry 12 i
014C .dbsym r Rx 10 i
014C .dbend
014C .dbfunc e line _line fV
014C ; E_Y -> R3,R4
014C ; E_X -> R2,R3
014C ; S_Y -> R1,R2
014C ; S_X -> R0,R1
.even
014C _line::
014C .dbline -1
014C .dbline 184
014C ; }
014C ;
014C ; /******************************************************************************
014C ; ** 函数名: void line(Uint S_X,Uint S_Y,Uint E_X,Uint E_Y)
014C ;
014C ; ** 描述: 指定起点和终点画一条直线,
014C ;
014C ; ** 修改的全局变量:
014C ;
014C ; ** 输入参数: Uint S_X,Uint S_Y :起点坐标
014C ;
014C ; ** Uint E_X,Uint E_Y :终点坐标
014C ;
014C ; ** 返回值:
014C ; *******************************************************************************/
014C ; void line(int S_X,int S_Y,int E_X,int E_Y)
014C ; {
014C .dbline -2
014C L13:
014C .dbline 0 ; func end
014C 0895 ret
014E .dbsym l E_Y 6 I
014E .dbsym l E_X 4 I
014E .dbsym l S_Y 2 I
014E .dbsym l S_X 0 I
014E .dbend
014E .dbfunc e Delay _Delay fV
014E ; usn -> R20
014E ; us -> R22
014E ; MS -> R16,R17
.even
014E _Delay::
014E 4A93 st -y,R20
0150 6A93 st -y,R22
0152 .dbline -1
0152 .dbline 250
0152 ; /*
0152 ; float K;
0152 ; Uint i,LEN;
0152 ; int B;
0152 ; Uchar dat;
0152 ; long X,Y;
0152 ; //--------------------------------------------------------------
0152 ; //斜率无穷大
0152 ; if(E_X==S_X)
0152 ; {
0152 ; if(S_Y<E_Y)LEN=E_Y-S_Y;
0152 ; else LEN=S_Y-E_Y;
0152 ; X=S_X;
0152 ; for(i=0;i<LEN;i++)
0152 ; {
0152 ; if(S_Y<E_Y)
0152 ; Y=S_Y+i;
0152 ; else Y=E_Y+i;
0152 ; LCD_putpixel(X,Y);
0152 ; }
0152 ; return ;
0152 ; }
0152 ; //----------------------------------------------------------------
0152 ; //斜率为0
0152 ; if(S_Y==E_Y)
0152 ; {
0152 ; if(S_X<E_X)LEN=E_X-S_X;
0152 ; else LEN=S_X-E_X;
0152 ; Y=S_Y;
0152 ; LEN=LEN-( (LEN+1)%8);
0152 ; for(i=0;i<LEN;i=i+8)
0152 ; {
0152 ; if(S_X<S_Y)
0152 ; X=S_X+i;
0152 ; else X=E_X+i;
0152 ; LCD_put8pixel(X,Y,0xff);
0152 ; }
0152 ; if( (LEN+1)%8 )
0152 ; {
0152 ; dat=0xff;
0152 ; for(i=0;i<(8-LEN%8);i++)
0152 ; {
0152 ; dat=dat-i*2;
0152 ; LCD_put8pixel(X+8,Y,dat);
0152 ; }
0152 ; }
0152 ; return;
0152 ; }
0152 ; //----------------------------------------------------------------
0152 ; K=(float)(E_Y-S_Y);
0152 ; K=K/(float)(E_X-S_X);
0152 ; B=S_Y-S_X*K;
0152 ; if(S_X<E_X)LEN=E_X-S_X;
0152 ; else LEN=S_X-E_X;
0152 ; for(i=0;i<LEN;i++)
0152 ; {
0152 ; X=(S_X)+i;
0152 ; Y=(K*((S_X)+i)+B);
0152 ; LCD_putpixel(X,Y);
0152 ; }
0152 ; */
0152 ; }
0152 ;
0152 ;
0152 ; void Delay(Uint MS)
0152 ; {
0152 0CC0 xjmp L16
0154 L15:
0154 .dbline 253
0154 ; Uchar us,usn;
0154 ; while(MS!=0)
0154 ; { usn = 4;
0154 .dbline 253
0154 44E0 ldi R20,4
0156 06C0 xjmp L19
0158 L18:
0158 .dbline 255
0158 ; while(usn!=0)
0158 ; {
0158 .dbline 256
0158 ; us=0xf0;
0158 60EF ldi R22,240
015A 01C0 xjmp L22
015C L21:
015C .dbline 257
015C ; while (us!=0){us--;};
015C .dbline 257
015C 6A95 dec R22
015E .dbline 257
015E L22:
015E .dbline 257
015E 6623 tst R22
0160 E9F7 brne L21
0162 X2:
0162 .dbline 257
0162 .dbline 258
0162 ; usn--;
0162 4A95 dec R20
0164 .dbline 259
0164 ; }
0164 L19:
0164 .dbline 254
0164 4423 tst R20
0166 C1F7 brne L18
0168 X3:
0168 .dbline 260
0168 ; MS--;
0168 0150 subi R16,1
016A 1040 sbci R17,0
016C .dbline 261
016C ; }
016C L16:
016C .dbline 252
016C 0030 cpi R16,0
016E 0107 cpc R16,R17
0170 89F7 brne L15
0172 X4:
0172 .dbline -2
0172 L14:
0172 .dbline 0 ; func end
0172 6991 ld R22,y+
0174 4991 ld R20,y+
0176 0895 ret
0178 .dbsym r usn 20 c
0178 .dbsym r us 22 c
0178 .dbsym r MS 16 i
0178 .dbend
0178 .dbfunc e WriteCommand _WriteCommand fV
0178 ; CommandByte -> R16
.even
0178 _WriteCommand::
0178 .dbline -1
0178 .dbline 276
0178 ; }
0178 ;
0178 ; /******************************************************************************
0178 ; ** 函数名: void WriteCommand( Uchar CommandByte )
0178 ;
0178 ; ** 描述: 向控制器写命令
0178 ;
0178 ; ** 修改的全局变量:
0178 ;
0178 ; ** 输入参数:
0178 ;
0178 ; ** 返回值:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -