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

📄 lcd-16sn.lis

📁 大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多功能
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module LCD-16sn.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
                        .area data(ram, con, rel)
 0000                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0000           _lcd_enable::
 0000                   .blkb 1
                        .area idata
 0000 01                .byte 1
                        .area data(ram, con, rel)
 0001                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0001                   .dbsym e lcd_enable _lcd_enable c
 0001           _lcd_disable::
 0001                   .blkb 1
                        .area idata
 0001 FE                .byte 254
                        .area data(ram, con, rel)
 0002                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0002                   .dbsym e lcd_disable _lcd_disable c
 0002           _in_instr_wr::
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0003                   .dbsym e in_instr_wr _in_instr_wr c
 0003           _in_data_wr::
 0003                   .blkb 1
                        .area idata
 0003 04                .byte 4
                        .area data(ram, con, rel)
 0004                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0004                   .dbsym e in_data_wr _in_data_wr c
 0004           _in_instr_rd::
 0004                   .blkb 1
                        .area idata
 0004 02                .byte 2
                        .area data(ram, con, rel)
 0005                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0005                   .dbsym e in_instr_rd _in_instr_rd c
 0005           _in_data_rd::
 0005                   .blkb 1
                        .area idata
 0005 06                .byte 6
                        .area data(ram, con, rel)
 0006                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0006                   .dbsym e in_data_rd _in_data_rd c
 0006           _indexhead::
 0006                   .blkb 2
                        .area idata
 0006 0000              .word 0
                        .area data(ram, con, rel)
 0008                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0008                   .dbsym e indexhead _indexhead I
 0008           _indextail::
 0008                   .blkb 2
                        .area idata
 0008 0000              .word 0
                        .area data(ram, con, rel)
 000A                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 000A                   .dbsym e indextail _indextail I
 000A           _cursor_index::
 000A                   .blkb 2
                        .area idata
 000A 0000              .word 0
                        .area data(ram, con, rel)
 000C                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 000C                   .dbsym e cursor_index _cursor_index I
                        .area lit(rom, con, rel)
 0000           _message1::
 0000 202052533233322044656D6F20202020  .byte 32,32,'R,'S,50,51,50,32,'D,'e,'m,'o,32,32,32,32
 0010 00                .byte 0
 0011                   .dbsym e message1 _message1 A[17:17]kc
 0011           _message2::
 0011 42617564726174653D33383430302020  .byte 'B,'a,'u,'d,'r,'a,'t,'e,61,51,56,52,48,48,32,32
 0021 00                .byte 0
 0022                   .dbsym e message2 _message2 A[17:17]kc
 0022           _message3::
 0022 204861707079204E6577205965617200  .byte 32,'H,'a,'p,'p,'y,32,'N,'e,'w,32,'Y,'e,'a,'r,0
 0032                   .dbsym e message3 _message3 A[16:16]kc
 0032           _message4::
 0032 203230303820697320636F6D696E6700  .byte 32,50,48,48,56,32,'i,'s,32,'c,'o,'m,'i,'n,'g,0
 0042                   .dbsym e message4 _message4 A[16:16]kc
 0042           _message5::
 0042 204772656574696E672046726F6D00    .byte 32,'G,'r,'e,'e,'t,'i,'n,'g,32,'F,'r,'o,'m,0
 0051                   .dbsym e message5 _message5 A[15:15]kc
 0051           _message6::
 0051 7777772E696E6F766163732E636F6D00  .byte 'w,'w,'w,46,'i,'n,'o,'v,'a,'c,'s,46,'c,'o,'m,0
 0061                   .dbsym e message6 _message6 A[16:16]kc
 0061           _message7::
 0061 436F6E7461637420496E6F766100      .byte 'C,'o,'n,'t,'a,'c,'t,32,'I,'n,'o,'v,'a,0
 006F                   .dbsym e message7 _message7 A[14:14]kc
 006F           _message8::
 006F 54656C3A303539322035353633353730  .byte 'T,'e,'l,58,48,53,57,50,32,53,53,54,51,53,55,48
 007F 00                .byte 0
 0080                   .dbsym e message8 _message8 A[17:17]kc
                        .area text(rom, con, rel)
 0000                   .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
 0000                   .dbfunc e WDT_off _WDT_off fV
                        .even
 0000           _WDT_off::
 0000                   .dbline -1
 0000                   .dbline 39
 0000           ; /*
 0000           ; Title:        LCD-16sn.c
 0000           ;               Function program used by DEMOB-16sm.c
 0000           ; */
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include <stdlib.h>
 0000           ; 
 0000           ; unsigned char lcd_enable = 0b00000001, lcd_disable = 0b11111110;
 0000           ; unsigned char in_instr_wr = 0b00000000, in_data_wr = 0b00000100;
 0000           ; unsigned char in_instr_rd = 0b00000010, in_data_rd = 0b00000110;
 0000           ; 
 0000           ; void wr_instruction(unsigned char instr);
 0000           ; void wr_data(unsigned char data);
 0000           ; 
 0000           ; int indexhead=0, indextail=0, indexcount;
 0000           ; int cursor_index=0;
 0000           ; 
 0000           ; 
 0000           ; const char message1[]= {"  RS232 Demo    "};
 0000           ; const char message2[]= {"Baudrate=38400  "}; 
 0000           ; const char message3[]= {" Happy New Year"};
 0000           ; const char message4[]= {" 2008 is coming"};
 0000           ; const char message5[]= {" Greeting From"};
 0000           ; const char message6[]= {"www.inovacs.com"};
 0000           ; const char message7[]= {"Contact Inova"};
 0000           ; const char message8[]= {"Tel:0592 5563570"};
 0000           ; 
 0000           ; void cursor_home(void);
 0000           ; void cursor_line1(void);
 0000           ; void cursor_line2(void);
 0000           ; int ifr_decode(void);
 0000           ; unsigned char swin, swin2;
 0000           ; 
 0000           ; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 0000           ; 
 0000           ; void WDT_off(void)
 0000           ;  {
 0000                   .dbline 40
 0000           ;  WDR();
 0000 A895              wdr
 0002                   .dbline 41
 0002           ;  WDTCR=0b00010111;
 0002 87E1              ldi R24,23
 0004 81BD              out 0x21,R24
 0006                   .dbline 42
 0006           ;  WDTCR=0b00000111;
 0006 87E0              ldi R24,7
 0008 81BD              out 0x21,R24
 000A                   .dbline -2
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
 000C                   .dbend
 000C                   .dbfunc e delay _delay fV
 000C           ;              b -> R10,R11
 000C           ;              a -> R20,R21
 000C           ;          count -> R16,R17
                        .even
 000C           _delay::
 000C 0E940000          xcall push_xgset300C
 0010                   .dbline -1
 0010                   .dbline 46
 0010           ;  }
 0010           ;  
 0010           ; void delay(int count)
 0010           ; {
 0010                   .dbline 48
 0010           ;  int a,b;
 0010           ;     b=2*count;
 0010 5801              movw R10,R16
 0012 AA0C              lsl R10
 0014 BB1C              rol R11
 0016                   .dbline 49
 0016           ;       for(a=0; a<b; a++)
 0016 4427              clr R20
 0018 5527              clr R21
 001A 02C0              xjmp L6
 001C           L3:
 001C                   .dbline 50
 001C           ;                        ;
 001C           L4:
 001C                   .dbline 49
 001C 4F5F              subi R20,255  ; offset = 1
 001E 5F4F              sbci R21,255
 0020           L6:
 0020                   .dbline 49
 0020 4A15              cp R20,R10
 0022 5B05              cpc R21,R11
 0024 DCF3              brlt L3
 0026           X0:
 0026                   .dbline -2
 0026           L2:
 0026                   .dbline 0 ; func end
 0026 0C940000          xjmp pop_xgset300C
 002A                   .dbsym r b 10 I
 002A                   .dbsym r a 20 I
 002A                   .dbsym r count 16 I
 002A                   .dbend
 002A                   .dbfunc e ldelay _ldelay fV
 002A           ;              i -> R20,R21
 002A           ;             ms -> R10,R11
                        .even
 002A           _ldelay::
 002A 0E940000          xcall push_xgset300C
 002E 5801              movw R10,R16
 0030                   .dbline -1
 0030                   .dbline 54
 0030           ; }
 0030           ; 
 0030           ; void ldelay(int ms)
 0030           ; {
 0030                   .dbline 56
 0030           ;  int i;
 0030           ;  for(i=0; i<=ms; i++)
 0030 4427              clr R20
 0032 5527              clr R21
 0034 05C0              xjmp L11
 0036           L8:
 0036                   .dbline 57
 0036           ;        delay(0x2000);           //2000-->4000
 0036 00E0              ldi R16,8192
 0038 10E2              ldi R17,32
 003A E8DF              xcall _delay
 003C           L9:
 003C                   .dbline 56
 003C 4F5F              subi R20,255  ; offset = 1
 003E 5F4F              sbci R21,255
 0040           L11:
 0040                   .dbline 56
 0040 A416              cp R10,R20
 0042 B506              cpc R11,R21
 0044 C4F7              brge L8
 0046           X1:
 0046                   .dbline -2
 0046           L7:
 0046                   .dbline 0 ; func end
 0046 0C940000          xjmp pop_xgset300C
 004A                   .dbsym r i 20 I
 004A                   .dbsym r ms 10 I
 004A                   .dbend
 004A                   .dbfunc e wr_instruction _wr_instruction fV
 004A           ;          instr -> R10
                        .even
 004A           _wr_instruction::
 004A AA92              st -y,R10
 004C A02E              mov R10,R16
 004E                   .dbline -1
 004E                   .dbline 70
 004E           ; }               
 004E           ; 
 004E           ; // ************************************************************
 004E           ; // LCD functions follows
 004E           ; 
 004E           ; //PORTB to LCD data port
 004E           ; //PORTA to LCD control port 
 004E           ; //PA0--> R/S
 004E           ; //PA1--> R/W
 004E           ; //PA2--> E
 004E           ; 
 004E           ; void wr_instruction(unsigned char instr)
 004E           ; {
 004E                   .dbline 71
 004E           ;  DDRA=0xff;
 004E 8FEF              ldi R24,255
 0050 8ABB              out 0x1a,R24
 0052                   .dbline 72
 0052           ;  delay(1);
 0052 01E0              ldi R16,1
 0054 10E0              ldi R17,0
 0056 DADF              xcall _delay
 0058                   .dbline 73
 0058           ;  PORTA=0b00000000;
 0058 2224              clr R2
 005A 2BBA              out 0x1b,R2
 005C                   .dbline 74
 005C           ;  PORTB=instr;                  //send out instruction
 005C A8BA              out 0x18,R10
 005E                   .dbline 75
 005E           ;  delay(2);
 005E 02E0              ldi R16,2
 0060 10E0              ldi R17,0
 0062 D4DF              xcall _delay
 0064                   .dbline 76

⌨️ 快捷键说明

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