main.lst

来自「液晶控制器S6B0724的控制。mplab 7.60+pic ccs 4.057」· LST 代码 · 共 1,439 行 · 第 1/4 页

LST
1,439
字号
....................       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 + =
减小字号Ctrl + -
显示快捷键?