⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avr320240.lis

📁 AVR单片机驱动C320240单色液晶模块的C语言程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -