?? ad.lis
字號:
0088 462F mov R20,R22
008A 407F andi R20,240
008C .dbline 41
008C ; lcd_out(0xfa);
008C 0AEF ldi R16,250
008E E5DF xcall _lcd_out
0090 .dbline 42
0090 ; lcd_out(s);
0090 042F mov R16,R20
0092 E3DF xcall _lcd_out
0094 .dbline 43
0094 ; s=dat&0x0f;
0094 462F mov R20,R22
0096 4F70 andi R20,15
0098 .dbline 44
0098 ; s<<=4;
0098 842F mov R24,R20
009A 8F70 andi R24,#0x0F
009C 8295 swap R24
009E 482F mov R20,R24
00A0 .dbline 45
00A0 ; lcd_out(s);
00A0 082F mov R16,R24
00A2 DBDF xcall _lcd_out
00A4 .dbline -2
00A4 L25:
00A4 .dbline 0 ; func end
00A4 0C940000 xjmp pop_xgsetF000
00A8 .dbsym r s 20 c
00A8 .dbsym r dat 22 c
00A8 .dbend
00A8 .dbfunc e WR_control _WR_control fV
00A8 ; s -> R20
00A8 ; dat -> R22
.even
00A8 _WR_control::
00A8 0E940000 xcall push_xgsetF000
00AC 602F mov R22,R16
00AE .dbline -1
00AE .dbline 49
00AE ; }
00AE ; //**************************************************************************
00AE ; void WR_control(unsigned char dat)
00AE ; {
00AE .dbline 51
00AE ; unsigned char s;
00AE ; s=dat&0xf0;
00AE 462F mov R20,R22
00B0 407F andi R20,240
00B2 .dbline 52
00B2 ; lcd_out(0xf8);
00B2 08EF ldi R16,248
00B4 D2DF xcall _lcd_out
00B6 .dbline 53
00B6 ; lcd_out(s);
00B6 042F mov R16,R20
00B8 D0DF xcall _lcd_out
00BA .dbline 54
00BA ; s=dat&0x0f;
00BA 462F mov R20,R22
00BC 4F70 andi R20,15
00BE .dbline 55
00BE ; s<<=4;
00BE 842F mov R24,R20
00C0 8F70 andi R24,#0x0F
00C2 8295 swap R24
00C4 482F mov R20,R24
00C6 .dbline 56
00C6 ; lcd_out(s);
00C6 082F mov R16,R24
00C8 C8DF xcall _lcd_out
00CA .dbline -2
00CA L26:
00CA .dbline 0 ; func end
00CA 0C940000 xjmp pop_xgsetF000
00CE .dbsym r s 20 c
00CE .dbsym r dat 22 c
00CE .dbend
00CE .dbfunc e lcd_control _lcd_control fV
.even
00CE _lcd_control::
00CE .dbline -1
00CE .dbline 60
00CE ; }
00CE ; //**************************************************************************
00CE ; void lcd_control()
00CE ; {
00CE .dbline 61
00CE ; WR_control(0x30);
00CE 00E3 ldi R16,48
00D0 EBDF xcall _WR_control
00D2 .dbline 62
00D2 ; WR_control(0x0c);
00D2 0CE0 ldi R16,12
00D4 E9DF xcall _WR_control
00D6 .dbline -2
00D6 L27:
00D6 .dbline 0 ; func end
00D6 0895 ret
00D8 .dbend
00D8 .dbfunc e lcd_clear _lcd_clear fV
00D8 ; i -> R20,R21
.even
00D8 _lcd_clear::
00D8 4A93 st -y,R20
00DA 5A93 st -y,R21
00DC .dbline -1
00DC .dbline 66
00DC ; }
00DC ; //**************************************************************************
00DC ; void lcd_clear()
00DC ; {
00DC .dbline 68
00DC ; int i;
00DC ; WR_control(0x01);
00DC 01E0 ldi R16,1
00DE E4DF xcall _WR_control
00E0 .dbline 69
00E0 ; for(i=0;i<5000;i++) // 延時5ms
00E0 4427 clr R20
00E2 5527 clr R21
00E4 L29:
00E4 .dbline 70
00E4 ; {
00E4 .dbline 71
00E4 ; asm("nop");
00E4 0000 nop
00E6 .dbline 72
00E6 ; asm("nop");
00E6 0000 nop
00E8 .dbline 74
00E8 ;
00E8 ; }
00E8 L30:
00E8 .dbline 69
00E8 4F5F subi R20,255 ; offset = 1
00EA 5F4F sbci R21,255
00EC .dbline 69
00EC 4838 cpi R20,136
00EE E3E1 ldi R30,19
00F0 5E07 cpc R21,R30
00F2 C4F3 brlt L29
00F4 X6:
00F4 .dbline -2
00F4 L28:
00F4 .dbline 0 ; func end
00F4 5991 ld R21,y+
00F6 4991 ld R20,y+
00F8 0895 ret
00FA .dbsym r i 20 I
00FA .dbend
00FA .dbfunc e LCD_address _LCD_address fV
00FA ; address -> R20
00FA ; y -> R22
00FA ; x -> R10
.even
00FA _LCD_address::
00FA 0E940000 xcall push_xgsetF00C
00FE 622F mov R22,R18
0100 A02E mov R10,R16
0102 .dbline -1
0102 .dbline 83
0102 ; }
0102 ; /*******************************************************/
0102 ; /****** 函數名稱: LCD_set_xy() ******/
0102 ; /****** 功 能: 設置LCD顯示坐標 ******/
0102 ; /****** 參 數: 顯示字符串的位置,X:0-15,Y:0-1*****/
0102 ; /****** 返回值 : 無 ******/
0102 ; /*******************************************************/
0102 ; void LCD_address( unsigned char x, unsigned char y )
0102 ; {
0102 .dbline 85
0102 ; unsigned char address;
0102 ; switch(x)
0102 4A2D mov R20,R10
0104 5527 clr R21
0106 4030 cpi R20,0
0108 4507 cpc R20,R21
010A 69F0 breq L37
010C X7:
010C 4130 cpi R20,1
010E E0E0 ldi R30,0
0110 5E07 cpc R21,R30
0112 61F0 breq L38
0114 X8:
0114 4230 cpi R20,2
0116 E0E0 ldi R30,0
0118 5E07 cpc R21,R30
011A 59F0 breq L39
011C X9:
011C 4330 cpi R20,3
011E E0E0 ldi R30,0
0120 5E07 cpc R21,R30
0122 51F0 breq L40
0124 X10:
0124 0CC0 xjmp L34
0126 L37:
0126 .dbline 88
0126 ; {
0126 ; case 0:
0126 ; address = 0x80 + y+1; //計算顯示地址
0126 462F mov R20,R22
0128 4F57 subi R20,127 ; addi 129
012A .dbline 89
012A ; break;
012A 0BC0 xjmp L35
012C L38:
012C .dbline 91
012C ; case 1:
012C ; address = 0x90 + y+1; //計算顯示地址
012C 462F mov R20,R22
012E 4F56 subi R20,111 ; addi 145
0130 .dbline 92
0130 ; break;
0130 08C0 xjmp L35
0132 L39:
0132 .dbline 94
0132 ; case 2:
0132 ; address = 0x88 + y+1; //計算顯示地址
0132 462F mov R20,R22
0134 4757 subi R20,119 ; addi 137
0136 .dbline 95
0136 ; break;
0136 05C0 xjmp L35
0138 L40:
0138 .dbline 97
0138 ; case 3:
0138 ; address = 0x98 + y+1; //計算顯示地址
0138 462F mov R20,R22
013A 4756 subi R20,103 ; addi 153
013C .dbline 98
013C ; break;
013C 02C0 xjmp L35
013E L34:
013E .dbline 99
013E ; default:address = 0x80 + y;
013E 462F mov R20,R22
0140 4058 subi R20,128 ; addi 128
0142 .dbline 100
0142 ; }
0142 L35:
0142 .dbline 101
0142 ; WR_control( address); //寫地址命令
0142 042F mov R16,R20
0144 B1DF xcall _WR_control
0146 .dbline -2
0146 L33:
0146 .dbline 0 ; func end
0146 0C940000 xjmp pop_xgsetF00C
014A .dbsym r address 20 c
014A .dbsym r y 22 c
014A .dbsym r x 10 c
014A .dbend
014A .dbfunc e LCD_Write_string _LCD_Write_string fV
014A ; s -> R20,R21
014A ; Y -> R12
014A ; X -> R10
.even
014A _LCD_Write_string::
014A 0E940000 xcall push_xgset303C
014E C22E mov R12,R18
0150 A02E mov R10,R16
0152 4E81 ldd R20,y+6
0154 5F81 ldd R21,y+7
0156 .dbline -1
0156 .dbline 112
0156 ; }
0156 ; //**************************************************************************
0156 ; /*******************************************************/
0156 ; /****** 函數名稱: LCD_write_string() ******/
0156 ; /****** 功 能: 中英文字符串顯示函數 ******/
0156 ; /****** 參 數: *s--英文字符串指針 ******/
0156 ; /****** X、Y--顯示字符串的位置 ******/
0156 ; /****** 返回值 : 無 ******/
0156 ; /*******************************************************/
0156 ; void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
0156 ; {
0156 .dbline 114
0156 ;
0156 ; LCD_address( X, Y ); //寫顯示地址
0156 2C2D mov R18,R12
0158 0A2D mov R16,R10
015A CFDF xcall _LCD_address
015C 05C0 xjmp L43
015E L42:
015E .dbline 116
015E ; while (*s) //是否到字符串尾
015E ; {
015E .dbline 117
015E ; WR_dat (*s ); //寫顯示數據
015E FA01 movw R30,R20
0160 0081 ldd R16,z+0
0162 8FDF xcall _WR_dat
0164 .dbline 118
0164 ; s ++; //字符串地址加1
0164 4F5F subi R20,255 ; offset = 1
0166 5F4F sbci R21,255
0168 .dbline 119
0168 ; }
0168 L43:
0168 .dbline 115
0168 FA01 movw R30,R20
016A 2080 ldd R2,z+0
016C 2220 tst R2
016E B9F7 brne L42
0170 X11:
0170 .dbline -2
0170 L41:
0170 .dbline 0 ; func end
0170 0C940000 xjmp pop_xgset303C
0174 .dbsym r s 20 pc
0174 .dbsym r Y 12 c
0174 .dbsym r X 10 c
0174 .dbend
0174 .dbfunc e BCD_ASCII _BCD_ASCII fc
0174 ; bcd -> R16
.even
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -