📄 main.lst
字号:
.................... 0x9E,0x7F,0x73,0x18,0x0E,0xF3,0xFF,0xFF,
.................... 0xFF,0xFF,0xFF,0x0F,0x1F,0x1F,0x0F,0x7F,
.................... 0xFF,0xFF,0xFE,0xFC,0xFC,0xF8,0x18,0xFD,
.................... 0xFF,0xFF,0x7E,0x1C,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x01,0x03,0x27,0x26,0x30,0x30,
.................... 0x3F,0x3F,0x3F,0x3F,0x3E,0x26,0x22,0x39,
.................... 0x39,0x20,0x3C,0x3E,0x3F,0x3F,0x3F,0x3F,
.................... 0x3E,0x38,0x38,0x39,0x39,0x38,0x38,0x3A,
.................... 0x3A,0x3A,0x3A,0x3A,0x3A,0x3A,0x3A,0x3A,
.................... 0x3A,0x3A,0x3A,0x3B,0x3B,0x3B,0x3B,0x3B,
.................... 0x3B,0x3B,0x39,0x38,0x38,0x39,0x39,0x39,
.................... 0x39,0x38,0x38,0x38,0x3E,0x3F,0x3F,0x3F,
.................... 0x3F,0x3E,0x3E,0x31,0x39,0x39,0x30,0x34,
.................... 0x3E,0x3F,0x3F,0x3F,0x3F,0x3B,0x3A,0x33,
.................... 0x33,0x31,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... };//256
.................... int8 const nBitmapDot4[] =
.................... {
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
.................... 0x08,0x08,0x08,0x88,0xE8,0x18,0x88,0x08,
.................... 0x08,0x08,0x00,0xA0,0x20,0x20,0xE0,0x80,
.................... 0xE0,0xB8,0xA0,0xF8,0xA0,0xA0,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,
.................... 0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x08,
.................... 0xE8,0xA8,0xA8,0xF8,0xA8,0xF8,0xA8,0xA8,
.................... 0xE8,0x08,0x00,0x10,0x10,0x90,0xD0,0x70,
.................... 0x58,0x50,0x50,0xD0,0x10,0x10,0x00,0x00,
.................... 0xC0,0x38,0x10,0x50,0x50,0x50,0x58,0x50,
.................... 0x50,0x10,0x00,0x00,0x80,0x00,0xE0,0x00,
.................... 0x08,0x70,0x00,0x00,0x80,0x00,0x00,0x00,
.................... 0x00,0x00,0x80,0x78,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
.................... 0x04,0x02,0x01,0x00,0x3F,0x00,0x00,0x01,
.................... 0x02,0x04,0x00,0x10,0x09,0x06,0x19,0x00,
.................... 0x3F,0x24,0x24,0x3F,0x24,0x24,0x00,0x00,
.................... 0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,
.................... 0x00,0x00,0x00,0x20,0x10,0x09,0x05,0x01,
.................... 0x01,0x01,0x05,0x09,0x10,0x20,0x00,0x22,
.................... 0x22,0x2A,0x2E,0x2B,0x12,0x1A,0x16,0x22,
.................... 0x22,0x02,0x00,0x02,0x01,0x00,0x3F,0x0A,
.................... 0x0A,0x0A,0x2A,0x3F,0x00,0x00,0x00,0x01,
.................... 0x3F,0x00,0x00,0x3D,0x15,0x15,0x15,0x15,
.................... 0x3D,0x00,0x00,0x04,0x03,0x00,0x3F,0x20,
.................... 0x20,0x20,0x20,0x3C,0x01,0x06,0x00,0x00,
.................... 0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00
.................... };
....................
....................
....................
.................... int1 Timer0_Flag=FALSE;
*
0690: BCF 03.5
0691: BCF 36.0
.................... //#define CMD 0
.................... //#define DAT 1
.................... #define PAGES 8
.................... #define COLUMNS 131 //64*131
.................... #define LCD_DATA *(0x07)
....................
.................... void SFR_Init()
.................... {
.................... set_tris_a(0xff);
*
04BB: MOVLW FF
04BC: BSF 03.5
04BD: MOVWF 05
.................... set_tris_b(0x01);
04BE: MOVLW 01
04BF: MOVWF 06
.................... set_tris_c(0x00);
04C0: MOVLW 00
04C1: MOVWF 07
.................... port_b_pullups(0xff);
04C2: BCF 01.7
.................... InitTimer0();
.................... Key_Init();
....................
.................... }
*
04D2: BCF 0A.3
04D3: GOTO 696 (RETURN)
.................... void LCD_WriteCmd(int8 cmd)
.................... {
.................... disable_interrupts(INT_RTCC);
*
0451: BCF 0B.5
.................... output_low(PIN_B5); //CS1=0;
0452: BCF 06.5
.................... output_low(PIN_B2); //A0=0
0453: BCF 06.2
.................... output_high(PIN_B4); //R=1
0454: BSF 06.4
.................... LCD_DATA=cmd;
0455: MOVF 41,W
0456: MOVWF 07
.................... output_low(PIN_B3); //WR=0
0457: BCF 06.3
.................... #asm
.................... NOP
0458: NOP
.................... NOP
0459: NOP
.................... NOP
045A: NOP
.................... NOP
045B: NOP
.................... #endasm
.................... output_high(PIN_B3); //WR=1
045C: BSF 06.3
.................... output_high(PIN_B5); //CS1=1
045D: BSF 06.5
.................... enable_interrupts(INT_RTCC);
045E: BSF 0B.5
.................... }
045F: RETLW 00
....................
.................... void LCD_WriteDat(int8 dat)
.................... {
.................... disable_interrupts(INT_RTCC);
*
05B5: BCF 0B.5
.................... output_low(PIN_B5); //CS1=0;
05B6: BCF 06.5
.................... output_high(PIN_B2); //A0=1
05B7: BSF 06.2
.................... output_high(PIN_B4); //R=1
05B8: BSF 06.4
.................... LCD_DATA=dat;
05B9: MOVF 40,W
05BA: MOVWF 07
.................... output_low(PIN_B3); //WR=0
05BB: BCF 06.3
.................... #asm
.................... NOP
05BC: NOP
.................... NOP
05BD: NOP
.................... NOP
05BE: NOP
.................... NOP
05BF: NOP
.................... #endasm
.................... output_high(PIN_B3); //WR=1
05C0: BSF 06.3
.................... output_high(PIN_B5); //CS1=1;
05C1: BSF 06.5
.................... enable_interrupts(INT_RTCC);
05C2: BSF 0B.5
.................... //output_c(0xff);
.................... }
05C3: RETLW 00
.................... int8 LCD_ReadStatus()
.................... {
.................... int8 dat;
.................... set_tris_c(0xff);
*
05DB: MOVLW FF
05DC: BSF 03.5
05DD: MOVWF 07
.................... output_low(PIN_B2); //A0=0
05DE: BCF 03.5
05DF: BCF 06.2
.................... output_high(PIN_B3); //WR=1
05E0: BSF 06.3
.................... output_low(PIN_B4); //R=0
05E1: BCF 06.4
.................... #asm
.................... NOP
05E2: NOP
.................... NOP
05E3: NOP
.................... NOP
05E4: NOP
.................... NOP
05E5: NOP
.................... #endasm
.................... dat=input_c();
05E6: MOVF 07,W
05E7: MOVWF 3B
.................... output_high(PIN_B4); //R=1
05E8: BSF 06.4
.................... set_tris_c(0x00);
05E9: MOVLW 00
05EA: BSF 03.5
05EB: MOVWF 07
.................... return dat;
05EC: BCF 03.5
05ED: MOVF 3B,W
05EE: MOVWF 21
.................... }
05EF: BCF 0A.3
05F0: GOTO 699 (RETURN)
....................
.................... //SetPage 0-7
.................... void LCD_SelPage(int8 page)
.................... {
.................... page=page%PAGES;
*
056F: MOVLW 07
0570: ANDWF 3D,F
.................... LCD_WriteCmd(0xb0+page);
0571: MOVLW B0
0572: ADDWF 3D,W
0573: MOVWF 3E
0574: CLRF 2E
0575: BTFSC 0B.7
0576: BSF 2E.7
0577: BCF 0B.7
0578: MOVF 3E,W
0579: MOVWF 41
057A: CALL 451
057B: BTFSC 2E.7
057C: BSF 0B.7
.................... }
057D: RETLW 00
....................
.................... //SetColumn 0-131 (131*64)
.................... void LCD_SelColumn(int8 column)
.................... {
.................... column=column%COLUMNS;
057E: MOVF 3D,W
057F: MOVWF 3E
0580: MOVLW 83
0581: MOVWF 3F
*
0596: MOVF 20,W
0597: MOVWF 3D
.................... LCD_WriteCmd(column&0x0f); //列的低四位
0598: MOVF 3D,W
0599: ANDLW 0F
059A: MOVWF 3E
059B: CLRF 2E
059C: BTFSC 0B.7
059D: BSF 2E.7
059E: BCF 0B.7
059F: MOVF 3E,W
05A0: MOVWF 41
05A1: CALL 451
05A2: BTFSC 2E.7
05A3: BSF 0B.7
.................... column>>=4;
05A4: SWAPF 3D,F
05A5: MOVLW 0F
05A6: ANDWF 3D,F
.................... LCD_WriteCmd(0x10|(column&0x0f)); //列的高四位
05A7: MOVF 3D,W
05A8: ANDLW 0F
05A9: IORLW 10
05AA: MOVWF 3E
05AB: CLRF 2E
05AC: BTFSC 0B.7
05AD: BSF 2E.7
05AE: BCF 0B.7
05AF: MOVF 3E,W
05B0: MOVWF 41
05B1: CALL 451
05B2: BTFSC 2E.7
05B3: BSF 0B.7
.................... }
05B4: RETLW 00
....................
.................... void LCD_Clear()
.................... {
.................... int8 i,j;
.................... for(i=0;i<8;i++)
*
05C4: CLRF 3B
05C5: MOVF 3B,W
05C6: SUBLW 07
05C7: BTFSS 03.0
05C8: GOTO 5D9
.................... {
.................... LCD_SelPage(i);
05C9: MOVF 3B,W
05CA: MOVWF 3D
05CB: CALL 56F
.................... LCD_SelColumn(0);
05CC: CLRF 3D
05CD: CALL 57E
.................... for(j=0;j<COLUMNS;j++)
05CE: CLRF 3C
05CF: MOVF 3C,W
05D0: SUBLW 82
05D1: BTFSS 03.0
05D2: GOTO 5D7
.................... {
.................... LCD_WriteDat(0x00);
05D3: CLRF 40
05D4: CALL 5B5
.................... }
05D5: INCF 3C,F
05D6: GOTO 5CF
.................... }
05D7: INCF 3B,F
05D8: GOTO 5C5
.................... }
05D9: BCF 0A.3
05DA: GOTO 698 (RETURN)
....................
.................... //从第page行,第column列开始,显示len个字母。Flag为反白显示。TRUE反白。
.................... /***************************************************
.................... // 函数原型: Display_En(int8,int8,int8,int1)
.................... // 入口参数: page 起始行,column 起始列,len 字符个数,Flag 反白显示。
.................... // 出口参数: void
.................... // 功 能: 显示8*5字符。
.................... // 最后修改: 2008.09.29
.................... // 注 意: 本函数具有自动换行功能
.................... Flag=0 正常显示
.................... Flag=1 反白显示
.................... ***************************************************/
.................... void Display_En(int8 page,int8 column,int8 len,int8 *En,int1 Flag)
.................... {
.................... int8 i,j,count;
.................... count=column; //对列进行计数,若大于本行的最大列,则转移到下一行。
....................
.................... page=page%PAGES; //防止输入的行超过0-7
.................... column=column%COLUMNS; //防止输入的列超过0-131
....................
.................... LCD_SelPage(page);
.................... LCD_SelColumn(column);
....................
.................... for(i=0;i<len;i++)
.................... {
.................... if(count+5>COLUMNS-1 && page<PAGES-1) //如果本行已经不够显示此字符,且行小于在0-6,则转移到下一行。
.................... {
.................... LCD_SelPage(++page); //
.................... LCD_SelColumn(0);
.................... count=0;
.................... }
.................... for(j=0;j<5;j++)
.................... {
.................... if(Flag)
.................... LCD_WriteDat(~En[i*5+j]);//反白
.................... else
.................... LCD_WriteDat(En[i*5+j]);
.................... }
.................... count=count+5; //列数监视
.................... }
.................... }
....................
.................... /***************************************************
.................... // 函数原型: Display_En_16X8(int8,int8,int8,int1)
.................... // 入口参数: page 起始行,column 起始列,len 字符个数,Flag 反白显示。
.................... // 出口参数: void
.................... // 功 能: 显示16*8字符。
.................... // 最后修改: 2008.09.29
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -