📄 lcd-16sn.lis
字号:
.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 + -