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

📄 lcmdisp.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0000                   .dbline 49
 0000           ; /****************************************************************************************
 0000           ; * 文件名:LCMDISP.C
 0000           ; * 功能:GUI测试及演示程序。
 0000           ; * 作者:黄绍斌
 0000           ; * 日期:2003.09.09
 0000           ; ****************************************************************************************/
 0000           ; #include "config.h"
 0000           ;  
 0000           ; 
 0000           ; // 一个单色图标的数据,宽度x高度=40x40
 0000           ; uint8 const ICO1[] = 
 0000           ; {
 0000           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0000           ; 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0x00,0xE0,0x00,0x00,0x18,
 0000           ; 0x00,0x18,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x40,0x00,0x02,0x00,0x00,0x80,0x00,
 0000           ; 0x01,0x00,0x01,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0xC0,0x02,0x01,0x81,0x80,
 0000           ; 0x40,0x04,0x03,0xC3,0xC0,0x20,0x04,0x03,0xC3,0xC0,0x20,0x04,0x03,0xC3,0xC0,0x20,
 0000           ; 0x08,0x03,0xC3,0xC0,0x10,0x08,0x03,0xC3,0xC0,0x10,0x08,0x01,0x81,0x80,0x10,0x08,
 0000           ; 0x08,0x00,0x10,0x10,0x08,0x08,0x00,0x10,0x10,0x08,0x10,0x00,0x08,0x10,0x08,0xF0,
 0000           ; 0x00,0x0F,0x10,0x08,0x08,0x00,0x10,0x10,0x04,0x04,0x00,0x20,0x20,0x04,0x06,0x00,
 0000           ; 0x60,0x20,0x04,0x03,0x81,0xC0,0x20,0x02,0x01,0x7E,0x80,0x40,0x03,0x00,0x81,0x00,
 0000           ; 0xC0,0x01,0x00,0x42,0x00,0x80,0x00,0x80,0x3C,0x01,0x00,0x00,0x40,0x00,0x02,0x00,
 0000           ; 0x00,0x30,0x00,0x0C,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x07,0x00,0xE0,0x00,0x00,
 0000           ; 0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0000           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0000           ; };
 0000           ; unsigned char KeyNew,KeyDown; 
 0000           ; char* p; 
 0000           ; // 样条曲线的4个端点
 0000           ; PointXY log_pin[] = { {40,  30},
 0000           ;                       {60, 60},
 0000           ;                       {80, 30},
 0000           ;                       {100, 60}
 0000           ;                     };
 0000           ; 
 0000           ; // 封闭多边形的各个顶点                    
 0000           ; uint32  const poly6[] = {750,55, 85,40, 90,45, 100,42, 115,55, 75,55};
 0000           ; unsigned char hz0[]=                          //韩
 0000           ; 
 0000           ; {
 0000           ; 0x10, 0x20, 0x10, 0x20, 0xfd, 0xfe, 0x10, 0x20, 0x7c, 0x20, 0x44, 0xfc, 0x7c, 0x20, 0x44, 0x20, 
 0000           ; 0x7d, 0xfe, 0x10, 0x22, 0xfe, 0x22, 0x10, 0x22, 0x10, 0x2a, 0x10, 0x24, 0x10, 0x20, 0x10, 0x20 
 0000           ; 
 0000           ; };  
 0000           ; 
 0000           ; WINDOWS *first_win;
 0000           ; 
 0000           ; void Port_Init()
 0000           ; {
 0000                   .dbline 50
 0000           ;  PORTD = 0XFF;
 0000 8FEF              ldi R24,255
 0002 82BB              out 0x12,R24
 0004                   .dbline 51
 0004           ;  DDRD  = 0XFF;
 0004 81BB              out 0x11,R24
 0006                   .dbline 52
 0006           ;  PORTB = 0XFF;
 0006 88BB              out 0x18,R24
 0008                   .dbline 53
 0008           ;  DDRB  = 0X00;
 0008 2224              clr R2
 000A 27BA              out 0x17,R2
 000C                   .dbline 54
 000C           ;  PORTF = 0x00;
 000C 20926200          sts 98,R2
 0010                   .dbline 55
 0010           ;  DDRF  = 0x1F;
 0010 8FE1              ldi R24,31
 0012 80936100          sts 97,R24
 0016                   .dbline 56
 0016           ;  PORTE = 0x0F;
 0016 8FE0              ldi R24,15
 0018 83B9              out 0x3,R24
 001A                   .dbline 57
 001A           ;  DDRE  = 0x00;
 001A 22B8              out 0x2,R2
 001C                   .dbline -2
 001C           L7:
 001C                   .dbline 0 ; func end
 001C 0895              ret
 001E                   .dbend
 001E                   .dbfunc e init_devices _init_devices fV
                        .even
 001E           _init_devices::
 001E                   .dbline -1
 001E                   .dbline 61
 001E           ; }    
 001E           ; //call this routine to initialize all peripherals
 001E           ; void init_devices(void)
 001E           ; {
 001E                   .dbline 63
 001E           ;  //stop errant interrupts until set up
 001E           ;  CLI(); //disable all interrupts
 001E F894              cli
 0020                   .dbline 64
 0020           ;  XDIV  = 0x00; //xtal divider
 0020 2224              clr R2
 0022 2CBE              out 0x3c,R2
 0024                   .dbline 65
 0024           ;  XMCRA = 0x00; //external memory
 0024 20926D00          sts 109,R2
 0028                   .dbline 66
 0028           ;  Port_Init();
 0028 EBDF              xcall _Port_Init
 002A                   .dbline 68
 002A           ; 
 002A           ;  MCUCR = 0x00;
 002A 2224              clr R2
 002C 25BE              out 0x35,R2
 002E                   .dbline 69
 002E           ;  EICRA = 0x00; //extended ext ints
 002E 20926A00          sts 106,R2
 0032                   .dbline 70
 0032           ;  EICRB = 0x00; //extended ext ints
 0032 2ABE              out 0x3a,R2
 0034                   .dbline 71
 0034           ;  EIMSK = 0x00;
 0034 29BE              out 0x39,R2
 0036                   .dbline 72
 0036           ;  TIMSK = 0x00; //timer interrupt sources
 0036 27BE              out 0x37,R2
 0038                   .dbline 73
 0038           ;  ETIMSK = 0x00; //extended timer interrupt sources
 0038 20927D00          sts 125,R2
 003C                   .dbline 74
 003C           ;  SEI(); //re-enable interrupts
 003C 7894              sei
 003E                   .dbline -2
 003E           L8:
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbend
 0040                   .dbfunc e key_scan _key_scan fV
 0040           ;          shift -> <dead>
 0040           ;              j -> <dead>
 0040           ;              i -> R20
                        .even
 0040           _key_scan::
 0040 0E940000          xcall push_gset1
 0044                   .dbline -1
 0044                   .dbline 78
 0044           ;  //all peripherals are now initialized
 0044           ; }          
 0044           ; void key_scan(void)
 0044           ; {
 0044                   .dbline 83
 0044           ;  unsigned char i,j,shift;
 0044           ; 
 0044           ;       //if (key_scan_begin==0) return;
 0044           ;       //key_scan_begin=0; 
 0044           ;       PORTE|=0X0f;//UP PULL
 0044 83B1              in R24,0x3
 0046 8F60              ori R24,15
 0048 83B9              out 0x3,R24
 004A                   .dbline 84
 004A           ;       PORTF|=0x1f;//OUT         
 004A 80916200          lds R24,98
 004E 8F61              ori R24,31
 0050 80936200          sts 98,R24
 0054                   .dbline 85
 0054           ;     for (i=0;i<5;i++)
 0054 4427              clr R20
 0056 20C0              xjmp L13
 0058           L10:
 0058                   .dbline 86
 0058           ;         {
 0058                   .dbline 87
 0058           ;          PORTF&=~(1<<i); //键盘线扫描
 0058 01E0              ldi R16,1
 005A 142F              mov R17,R20
 005C 0E940000          xcall lsl8
 0060 202E              mov R2,R16
 0062 2094              com R2
 0064 30906200          lds R3,98
 0068 3220              and R3,R2
 006A 30926200          sts 98,R3
 006E                   .dbline 89
 006E           ;                //delay_us(1);          
 006E           ;          KeyNew=PINE&0x0f;//读取键盘扫描信号,屏蔽高四位PC0~3
 006E 81B1              in R24,0x1
 0070 8F70              andi R24,15
 0072 80930500          sts _KeyNew,R24
 0076                   .dbline 90
 0076           ;          if (KeyNew!=0x0f)//如果有键按下,延时10ms消抖
 0076 8F30              cpi R24,15
 0078 71F0              breq L14
 007A                   .dbline 91
 007A           ;             {   
 007A                   .dbline 93
 007A           ;                        //key_up=0;  
 007A           ;                        KeyDown = 1;      
 007A 81E0              ldi R24,1
 007C 80930400          sts _KeyDown,R24
 0080                   .dbline 94
 0080           ;                        KeyNew=KeyNew<<4;
 0080 80910500          lds R24,_KeyNew
 0084 8F70              andi R24,#0x0F
 0086 8295              swap R24
 0088 80930500          sts _KeyNew,R24
 008C                   .dbline 95
 008C           ;                        KeyNew=KeyNew|i;//get key scan code
 008C 282E              mov R2,R24
 008E 242A              or R2,R20
 0090 20920500          sts _KeyNew,R2
 0094                   .dbline 96
 0094           ;                        return;
 0094 03C0              xjmp L9
 0096           L14:
 0096                   .dbline 100
 0096           L11:
 0096                   .dbline 85
 0096 4395              inc R20
 0098           L13:
 0098                   .dbline 85
 0098 4530              cpi R20,5
 009A F0F2              brlo L10
 009C                   .dbline -2
 009C           L9:
 009C 0E940000          xcall pop_gset1
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbsym l shift 1 c
 00A2                   .dbsym l j 1 c
 00A2                   .dbsym r i 20 c
 00A2                   .dbend
 00A2                   .dbfunc e Hex2Ascii _Hex2Ascii fI
 00A2           ;          ascii -> y+0
 00A2           ;           temp -> R20
 00A2           ;              h -> R16
                        .even
 00A2           _Hex2Ascii::
 00A2 0E940000          xcall push_gset1
 00A6 2297              sbiw R28,2
 00A8                   .dbline -1
 00A8                   .dbline 103
 00A8           ;                        //putchar(KeyNew);
 00A8           ;                       }
 00A8           ;                        //memmove(&key_buf[0],&key_buf[1],KEY_BUF_LEN-1);   
 00A8           ;         }//for (i=0;i<5;i++) 
 00A8           ; }   
 00A8           ; Hex2Ascii(unsigned char h)
 00A8           ; {
 00A8                   .dbline 107
 00A8           ;  unsigned char ascii[2];
 00A8           ;  unsigned char temp;
 00A8           ;  
 00A8           ;  temp = (h&0xf0)>>4;
 00A8 402F              mov R20,R16
 00AA 407F              andi R20,240
 00AC 4295              swap R20
 00AE 4F70              andi R20,#0x0F
 00B0                   .dbline 108

⌨️ 快捷键说明

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