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

📄 bitmap.lis

📁 AVR控制12864液晶画圆弧,在AVR单片机的控制下完成圆弧的绘制。
💻 LIS
字号:
                        .module bitmap.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\ygksb0108\programme2_can_run\bitmap.c
 0000                   .dbfunc e lcd_bitmap _lcd_bitmap fV
 0000                   .dbstruct 0 4 IMG_DEF
 0000                   .dbfield 0 width_in_pixels kc
 0000                   .dbfield 1 height_in_pixels kc
 0000                   .dbfield 2 char_table pkc
 0000                   .dbend
 0000           ;         heigth -> y+2
 0000           ;              h -> R22
 0000           ;          width -> y+1
 0000           ;         ptable -> R12,R13
 0000           ;        pattern -> R20
 0000           ;              w -> R14
 0000           ;           mask -> R10
 0000           ;           mode -> y+19
 0000           ;        img_ptr -> y+17
 0000           ;            top -> y+15
 0000           ;           left -> y+13
                        .even
 0000           _lcd_bitmap::
 0000 0E940000          xcall push_arg4
 0004 0E940000          xcall push_gset5
 0008 2397              sbiw R28,3
 000A                   .dbline -1
 000A                   .dbline 13
 000A           ; //*****************************************************************
 000A           ; //本文件实现了显示位图的基本数据结构和加载位图的函数
 000A           ; //                                    ---北京交通大学电气学院 杨罡
 000A           ; //*****************************************************************
 000A           ; 
 000A           ; #include "bitmap.h"
 000A           ; 
 000A           ; 
 000A           ; /* Draws a bitmap into the Framebuffer.
 000A           ;    Bitmaps are converted from Windows BMP-Format to 
 000A           ;    C-Arrays with the fontgen-tool (see files bmp.h/bmp.c) */
 000A           ; void lcd_bitmap( uint8_t left,  uint8_t top, const struct IMG_DEF *img_ptr, uint8_t mode)
 000A           ;  { uint8_t width, heigth, h, w, pattern, mask;
 000A                   .dbline 16
 000A           ;    uint8_t* ptable;
 000A           ; 
 000A           ;    width  = pgm_read_byte( &(img_ptr->width_in_pixels) );
 000A 0989              ldd R16,y+17
 000C 1A89              ldd R17,y+18
 000E 0E940000          xcall _pgm_read_byte
 0012 0983              std y+1,R16
 0014                   .dbline 17
 0014           ;    heigth = pgm_read_byte( &(img_ptr->height_in_pixels) );
 0014 0989              ldd R16,y+17
 0016 1A89              ldd R17,y+18
 0018 0F5F              subi R16,255  ; offset = 1
 001A 1F4F              sbci R17,255
 001C 0E940000          xcall _pgm_read_byte
 0020 0A83              std y+2,R16
 0022                   .dbline 18
 0022           ;    ptable  = (uint8_t*) pgm_read_word( (uint16_t*)(&(img_ptr->char_table)) ); 
 0022 0989              ldd R16,y+17
 0024 1A89              ldd R17,y+18
 0026 0E5F              subi R16,254  ; offset = 2
 0028 1F4F              sbci R17,255
 002A 0E940000          xcall _pgm_read_word
 002E 6801              movw R12,R16
 0030                   .dbline 21
 0030           ;    //ptable  = (uint8_t*) pgm_read_word( &(img_ptr->char_table) ); 
 0030           ; 
 0030           ;    for ( h=0; h<heigth; h++ ) 
 0030 6627              clr R22
 0032 28C0              xjmp L5
 0034           L2:
 0034                   .dbline 22
 0034           ;     { mask = 0x80;
 0034                   .dbline 22
 0034 80E8              ldi R24,128
 0036 A82E              mov R10,R24
 0038                   .dbline 23
 0038           ;       pattern = pgm_read_byte( ptable );
 0038 8601              movw R16,R12
 003A 0E940000          xcall _pgm_read_byte
 003E 402F              mov R20,R16
 0040                   .dbline 24
 0040           ;       ptable++;
 0040 C601              movw R24,R12
 0042 0196              adiw R24,1
 0044 6C01              movw R12,R24
 0046                   .dbline 25
 0046           ;       for ( w=0; w<width; w++ ) 
 0046 EE24              clr R14
 0048 19C0              xjmp L9
 004A           L6:
 004A                   .dbline 26
 004A           ;        { if ( pattern & mask ) 
 004A                   .dbline 26
 004A 242E              mov R2,R20
 004C 2A20              and R2,R10
 004E 51F0              breq L10
 0050                   .dbline 27
 0050           ;             lcd_dot(w+left, h+top, mode);
 0050 0B88              ldd R0,y+19
 0052 0882              std y+0,R0
 0054 262F              mov R18,R22
 0056 0F84              ldd R0,y+15
 0058 200D              add R18,R0
 005A 0E2D              mov R16,R14
 005C 0D84              ldd R0,y+13
 005E 000D              add R16,R0
 0060 0E940000          xcall _lcd_dot
 0064           L10:
 0064                   .dbline 29
 0064           ; 
 0064           ;          mask >>= 1;
 0064 A694              lsr R10
 0066                   .dbline 30
 0066           ;          if ( mask == 0 ) 
 0066 49F4              brne L12
 0068                   .dbline 31
 0068           ;           { mask = 0x80;
 0068                   .dbline 31
 0068 80E8              ldi R24,128
 006A A82E              mov R10,R24
 006C                   .dbline 32
 006C           ;             pattern = pgm_read_byte( ptable );
 006C 8601              movw R16,R12
 006E 0E940000          xcall _pgm_read_byte
 0072 402F              mov R20,R16
 0074                   .dbline 33
 0074           ;             ptable++;
 0074 C601              movw R24,R12
 0076 0196              adiw R24,1
 0078 6C01              movw R12,R24
 007A                   .dbline 34
 007A           ;           }
 007A           L12:
 007A                   .dbline 35
 007A           L7:
 007A                   .dbline 25
 007A E394              inc R14
 007C           L9:
 007C                   .dbline 25
 007C 0980              ldd R0,y+1
 007E E014              cp R14,R0
 0080 20F3              brlo L6
 0082                   .dbline 36
 0082           L3:
 0082                   .dbline 21
 0082 6395              inc R22
 0084           L5:
 0084                   .dbline 21
 0084 0A80              ldd R0,y+2
 0086 6015              cp R22,R0
 0088 A8F2              brlo L2
 008A                   .dbline -2
 008A           L1:
 008A 2396              adiw R28,3
 008C 0E940000          xcall pop_gset5
 0090 2496              adiw R28,4
 0092                   .dbline 0 ; func end
 0092 0895              ret
 0094                   .dbsym l heigth 2 c
 0094                   .dbsym r h 22 c
 0094                   .dbsym l width 1 c
 0094                   .dbsym r ptable 12 pc
 0094                   .dbsym r pattern 20 c
 0094                   .dbsym r w 14 c
 0094                   .dbsym r mask 10 c
 0094                   .dbsym l mode 19 c
 0094                   .dbsym l img_ptr 17 pkS[IMG_DEF]
 0094                   .dbsym l top 15 c
 0094                   .dbsym l left 13 c
 0094                   .dbend
                        .area lit(rom, con, rel)
 0000           _icon1_char_table::
 0000 00                .byte 0
 0001                   .dbsym e icon1_char_table _icon1_char_table A[1:1]kc
 0001           _icon1_bmp::
 0001 01                .byte 1
 0002 01                .byte 1
 0003 0000              .word _icon1_char_table
 0005                   .dbsym e icon1_bmp _icon1_bmp kS[IMG_DEF]
 0005           _frame_char_table::
 0005 00                .byte 0
 0006                   .dbsym e frame_char_table _frame_char_table A[1:1]kc
 0006           _frame_bmp::
 0006 01                .byte 1
 0007 01                .byte 1
 0008 0500              .word _frame_char_table
 000A                   .dbsym e frame_bmp _frame_bmp kS[IMG_DEF]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -