?? 12864-7920.lis
字號:
.module _12864-7920.c
.area text(rom, con, rel)
0000 .dbfile E:\產品\開發板\光盤\16實驗程序\12864-7920液晶\12864-7920.c
0000 .dbfunc e s_ms _s_ms fV
0000 ; ms -> R16,R17
.even
0000 _s_ms::
0000 .dbline -1
0000 .dbline 20
0000 ; //12864液晶的試驗程序,驅動芯片為ST7920
0000 ; //目標板為DDC-16A
0000 ; //驅動方式-并口
0000 ; //JP10短路塊位于右側,JP1兩個短路塊均插好
0000 ; //調節V0電位器調整對比度
0000 ; //注意:因為廠家不同液晶的19腳和20腳(背光)有時會不同,導致背光不亮,需要注意。
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <string.h>
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; #define RS (1<<5)
0000 ; #define RW (1<<6)
0000 ; #define EN (1<<7)
0000 ;
0000 ; //延時函數
0000 ; void s_ms(uint ms)
0000 ; {
0000 .dbline 21
0000 ; for(;ms>1;ms--);
0000 02C0 xjmp L5
0002 L2:
0002 .dbline 21
0002 L3:
0002 .dbline 21
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 L5:
0006 .dbline 21
0006 81E0 ldi R24,1
0008 90E0 ldi R25,0
000A 8017 cp R24,R16
000C 9107 cpc R25,R17
000E C8F3 brlo L2
0010 X0:
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbsym r ms 16 i
0012 .dbend
.area data(ram, con, rel)
0000 .dbfile E:\產品\開發板\光盤\16實驗程序\12864-7920液晶\12864-7920.c
0000 _text_1::
0000 .blkb 15
.area idata
0000 B1B1BEA9B6ABBFD8BFAAB7A2B0E500 .byte 177,177,190,169,182,171,191,216,191,170,183,162,176,229,0
.area data(ram, con, rel)
000F .dbfile E:\產品\開發板\光盤\16實驗程序\12864-7920液晶\12864-7920.c
000F .dbsym e text_1 _text_1 A[15:15]c
000F _text_2::
000F .blkb 14
.area idata
000F 5757572E49534D43552E434F4D00 .byte 'W,'W,'W,46,'I,'S,'M,'C,'U,46,'C,'O,'M,0
.area data(ram, con, rel)
001D .dbfile E:\產品\開發板\光盤\16實驗程序\12864-7920液晶\12864-7920.c
001D .dbsym e text_2 _text_2 A[14:14]c
001D _text_3::
001D .blkb 15
.area idata
001D 5744445F434E403132362E434F4D00 .byte 'W,'D,'D,95,'C,'N,64,49,50,54,46,'C,'O,'M,0
.area data(ram, con, rel)
002C .dbfile E:\產品\開發板\光盤\16實驗程序\12864-7920液晶\12864-7920.c
002C .dbsym e text_3 _text_3 A[15:15]c
002C _text_4::
002C .blkb 10
.area idata
002C 51513A36323135323000 .byte 'Q,'Q,58,54,50,49,53,50,48,0
.area data(ram, con, rel)
0036 .dbfile E:\產品\開發板\光盤\16實驗程序\12864-7920液晶\12864-7920.c
0036 .dbsym e text_4 _text_4 A[10:10]c
.area text(rom, con, rel)
0012 .dbfile E:\產品\開發板\光盤\16實驗程序\12864-7920液晶\12864-7920.c
0012 .dbfunc e WriteDataLCM _WriteDataLCM fV
0012 ; WDLCM -> R10
.even
0012 _WriteDataLCM::
0012 AA92 st -y,R10
0014 A02E mov R10,R16
0016 .dbline -1
0016 .dbline 32
0016 ; }
0016 ;
0016 ; //此處定義字符串
0016 ; char text_1[]={"北京東控開發板"};
0016 ; char text_2[]={"WWW.ISMCU.COM"};
0016 ; char text_3[]={"WDD_CN@126.COM"};
0016 ; char text_4[]={"QQ:621520"};
0016 ;
0016 ; //寫數據
0016 ; void WriteDataLCM(unsigned char WDLCM)
0016 ; {
0016 .dbline 34
0016 ; //ReadStatusLCM(); //檢測忙
0016 ; s_ms(100);
0016 04E6 ldi R16,100
0018 10E0 ldi R17,0
001A F2DF xcall _s_ms
001C .dbline 35
001C ; PORTA|=RS; //RS=1
001C DD9A sbi 0x1b,5
001E .dbline 36
001E ; s_ms(100);
001E 04E6 ldi R16,100
0020 10E0 ldi R17,0
0022 EEDF xcall _s_ms
0024 .dbline 37
0024 ; PORTA&=~RW; //RW=0
0024 DE98 cbi 0x1b,6
0026 .dbline 38
0026 ; s_ms(100);
0026 04E6 ldi R16,100
0028 10E0 ldi R17,0
002A EADF xcall _s_ms
002C .dbline 39
002C ; PORTA|=EN; //EN=1
002C DF9A sbi 0x1b,7
002E .dbline 40
002E ; s_ms(100);
002E 04E6 ldi R16,100
0030 10E0 ldi R17,0
0032 E6DF xcall _s_ms
0034 .dbline 41
0034 ; PORTD=WDLCM; //輸出數據
0034 A2BA out 0x12,R10
0036 .dbline 42
0036 ; s_ms(100);
0036 04E6 ldi R16,100
0038 10E0 ldi R17,0
003A E2DF xcall _s_ms
003C .dbline 43
003C ; PORTA&=~EN; //EN=0
003C DF98 cbi 0x1b,7
003E .dbline 44
003E ; s_ms(100);
003E 04E6 ldi R16,100
0040 10E0 ldi R17,0
0042 DEDF xcall _s_ms
0044 .dbline -2
0044 L6:
0044 .dbline 0 ; func end
0044 A990 ld R10,y+
0046 0895 ret
0048 .dbsym r WDLCM 10 c
0048 .dbend
0048 .dbfunc e WriteCommandLCM _WriteCommandLCM fV
0048 ; WCLCM -> R10
.even
0048 _WriteCommandLCM::
0048 AA92 st -y,R10
004A A02E mov R10,R16
004C .dbline -1
004C .dbline 49
004C ; }
004C ;
004C ; //寫指令
004C ; void WriteCommandLCM(unsigned char WCLCM)
004C ; {
004C .dbline 51
004C ; //ReadStatusLCM(); //根據需要檢測忙
004C ; s_ms(100);
004C 04E6 ldi R16,100
004E 10E0 ldi R17,0
0050 D7DF xcall _s_ms
0052 .dbline 52
0052 ; PORTA&=~RS; //RS=0
0052 DD98 cbi 0x1b,5
0054 .dbline 53
0054 ; s_ms(100);
0054 04E6 ldi R16,100
0056 10E0 ldi R17,0
0058 D3DF xcall _s_ms
005A .dbline 54
005A ; PORTA&=~RW; //RW=0
005A DE98 cbi 0x1b,6
005C .dbline 55
005C ; s_ms(100);
005C 04E6 ldi R16,100
005E 10E0 ldi R17,0
0060 CFDF xcall _s_ms
0062 .dbline 56
0062 ; PORTA|=EN; //EN=1
0062 DF9A sbi 0x1b,7
0064 .dbline 57
0064 ; s_ms(100);
0064 04E6 ldi R16,100
0066 10E0 ldi R17,0
0068 CBDF xcall _s_ms
006A .dbline 58
006A ; PORTD=WCLCM; //輸出指令
006A A2BA out 0x12,R10
006C .dbline 59
006C ; s_ms(100);
006C 04E6 ldi R16,100
006E 10E0 ldi R17,0
0070 C7DF xcall _s_ms
0072 .dbline 60
0072 ; PORTA&=~EN; //EN=0
0072 DF98 cbi 0x1b,7
0074 .dbline 61
0074 ; s_ms(100);
0074 04E6 ldi R16,100
0076 10E0 ldi R17,0
0078 C3DF xcall _s_ms
007A .dbline -2
007A L7:
007A .dbline 0 ; func end
007A A990 ld R10,y+
007C 0895 ret
007E .dbsym r WCLCM 10 c
007E .dbend
007E .dbfunc e ReadStatusLCM _ReadStatusLCM fV
007E ; flag -> R20
007E ; temp -> R10
.even
007E _ReadStatusLCM::
007E AA92 st -y,R10
0080 4A93 st -y,R20
0082 .dbline -1
0082 .dbline 66
0082 ; }
0082 ;
0082 ; //讀狀態:檢測忙
0082 ; void ReadStatusLCM(void)
0082 ; {
0082 .dbline 68
0082 ; uchar temp;
0082 ; uchar flag = 1;
0082 41E0 ldi R20,1
0084 2AC0 xjmp L10
0086 L9:
0086 .dbline 70
0086 ; while(flag==1)
0086 ; {
0086 .dbline 71
0086 ; DDRD=0x00; //端口A改為輸入
0086 2224 clr R2
0088 21BA out 0x11,R2
008A .dbline 72
008A ; PORTD=0xff;
008A 8FEF ldi R24,255
008C 82BB out 0x12,R24
008E .dbline 73
008E ; s_ms(100);
008E 04E6 ldi R16,100
0090 10E0 ldi R17,0
0092 B6DF xcall _s_ms
0094 .dbline 74
0094 ; PORTA&=~RS; //RS=0
0094 DD98 cbi 0x1b,5
0096 .dbline 75
0096 ; s_ms(100);
0096 04E6 ldi R16,100
0098 10E0 ldi R17,0
009A B2DF xcall _s_ms
009C .dbline 76
009C ; PORTA|=RW; //RW=1
009C DE9A sbi 0x1b,6
009E .dbline 77
009E ; s_ms(100);
009E 04E6 ldi R16,100
00A0 10E0 ldi R17,0
00A2 AEDF xcall _s_ms
00A4 .dbline 78
00A4 ; PORTA|=EN; //EN=1
00A4 DF9A sbi 0x1b,7
00A6 .dbline 79
00A6 ; s_ms(1000);
00A6 08EE ldi R16,1000
00A8 13E0 ldi R17,3
00AA AADF xcall _s_ms
00AC .dbline 80
00AC ; temp = PIND; //讀端口A
00AC A0B2 in R10,0x10
00AE .dbline 81
00AE ; s_ms(1000);
00AE 08EE ldi R16,1000
00B0 13E0 ldi R17,3
00B2 A6DF xcall _s_ms
00B4 .dbline 82
00B4 ; DDRD=0xff; //端口A改為
00B4 8FEF ldi R24,255
00B6 81BB out 0x11,R24
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -