📄 m.lst
字号:
01FE: BCF F95.7
0200: BSF F8C.7
.................... //同步
.................... for(i=0;i<5;i++)
0202: CLRF 4B
0204: MOVF 4B,W
0206: SUBLW 04
0208: BNC 0216
.................... {
.................... output_high(LCM_SCK);
020A: BCF F95.6
020C: BSF F8C.6
.................... output_low(LCM_SCK);
020E: BCF F95.6
0210: BCF F8C.6
.................... }
0212: INCF 4B,F
0214: BRA 0204
.................... //RW=0写
.................... output_low(LCM_SID);
0216: BCF F95.7
0218: BCF F8C.7
.................... output_high(LCM_SCK);
021A: BCF F95.6
021C: BSF F8C.6
.................... output_low(LCM_SCK);
021E: BCF F95.6
0220: BCF F8C.6
.................... //Rs=1数据 RS=0指令
.................... if(Data)
0222: MOVF 48,F
0224: BZ 022C
.................... output_high(LCM_SID); //data
0226: BCF F95.7
0228: BSF F8C.7
.................... else
022A: BRA 0230
.................... output_low(LCM_SID); //command
022C: BCF F95.7
022E: BCF F8C.7
....................
.................... output_high(LCM_SCK);
0230: BCF F95.6
0232: BSF F8C.6
.................... output_low(LCM_SCK);
0234: BCF F95.6
0236: BCF F8C.6
.................... output_low(LCM_SID);
0238: BCF F95.7
023A: BCF F8C.7
.................... output_high(LCM_SCK);
023C: BCF F95.6
023E: BSF F8C.6
.................... output_low(LCM_SCK);
0240: BCF F95.6
0242: BCF F8C.6
....................
.................... //分为两字节写一个内容
.................... for(j=0;j<2;j++)
0244: CLRF 4C
0246: MOVF 4C,W
0248: SUBLW 01
024A: BNC 028A
.................... {
.................... for(i=0;i<4;i++)
024C: CLRF 4B
024E: MOVF 4B,W
0250: SUBLW 03
0252: BNC 026E
.................... {
.................... output_bit(LCM_SID, shift_left(&content,1,0));
0254: BCF FD8.0
0256: RLCF 49,F
0258: BC 025E
025A: BCF F8C.7
025C: BRA 0260
025E: BSF F8C.7
0260: BCF F95.7
.................... output_high(LCM_SCK);
0262: BCF F95.6
0264: BSF F8C.6
.................... output_low(LCM_SCK);
0266: BCF F95.6
0268: BCF F8C.6
.................... }
026A: INCF 4B,F
026C: BRA 024E
.................... output_low(LCM_SID);
026E: BCF F95.7
0270: BCF F8C.7
.................... for(i=0;i<4;i++)
0272: CLRF 4B
0274: MOVF 4B,W
0276: SUBLW 03
0278: BNC 0286
.................... {
.................... output_high(LCM_SCK);
027A: BCF F95.6
027C: BSF F8C.6
.................... output_low(LCM_SCK);
027E: BCF F95.6
0280: BCF F8C.6
.................... }
0282: INCF 4B,F
0284: BRA 0274
.................... }
0286: INCF 4C,F
0288: BRA 0246
....................
.................... }
028A: RETLW 00
....................
.................... /*---------------设置字符显示位置----------------*/
.................... void LCD_setpos(unsigned char x,unsigned char y)// 0<=x<=7,0<=y<=3
.................... {
.................... unsigned char tmp;
.................... if(y>3)y=0;
*
0338: MOVF 43,W
033A: SUBLW 03
033C: BTFSS FD8.0
033E: CLRF 43
.................... if(x>7)x=0;
0340: MOVF 42,W
0342: SUBLW 07
0344: BTFSS FD8.0
0346: CLRF 42
....................
.................... LcmCurrX=x*2+y*16;
0348: BCF FD8.0
034A: RLCF 42,W
034C: MOVWF 45
034E: MOVF 43,W
0350: MULLW 10
0352: MOVF FF3,W
0354: ADDWF 45,W
0356: MOVWF 27
....................
.................... if(y==0) tmp=0x80+x;
0358: MOVF 43,F
035A: BNZ 0362
035C: MOVLW 80
035E: ADDWF 42,W
0360: MOVWF 44
.................... if(y==1) tmp=0x90+x;
0362: DECFSZ 43,W
0364: BRA 036C
0366: MOVLW 90
0368: ADDWF 42,W
036A: MOVWF 44
.................... if(y==2) tmp=0x88+x;
036C: MOVF 43,W
036E: SUBLW 02
0370: BNZ 0378
0372: MOVLW 88
0374: ADDWF 42,W
0376: MOVWF 44
.................... if(y==3) tmp=0x98+x;
0378: MOVF 43,W
037A: SUBLW 03
037C: BNZ 0384
037E: MOVLW 98
0380: ADDWF 42,W
0382: MOVWF 44
.................... LCD_Write (comm,tmp);
0384: CLRF 48
0386: MOVFF 44,49
038A: RCALL 01F6
.................... //delay_ms(1);
.................... delay_us(70);
038C: MOVLW 17
038E: MOVWF 00
0390: DECFSZ 00,F
0392: BRA 0390
.................... }
0394: RETLW 00
....................
.................... /*---------------清屏---------------*/
.................... void LCD_disp_CLS ()
.................... {
.................... LCD_Write (comm,0x30);
*
028C: CLRF 48
028E: MOVLW 30
0290: MOVWF 49
0292: RCALL 01F6
.................... LCD_Write (comm,0x01);
0294: CLRF 48
0296: MOVLW 01
0298: MOVWF 49
029A: RCALL 01F6
.................... delay_ms(20);
029C: MOVLW 14
029E: MOVWF 42
02A0: RCALL 01CE
.................... }
02A2: RETLW 00
....................
.................... /*---------------显示ROM字符串----------------*/
.................... void LCDprintR(unsigned char *addr,unsigned char X,unsigned char Y)
.................... {
.................... unsigned char data;
....................
.................... LCD_setpos(x,y);
*
0396: MOVFF 3F,42
039A: MOVFF 40,43
039E: RCALL 0338
....................
.................... while(read_program_eeprom(addr)!=0)
.................... { data=read_program_eeprom(addr);
03A0: CLRF FF8
03A2: MOVFF 3E,FF7
03A6: MOVFF 3D,FF6
03AA: TBLRD*+
03AC: MOVF FF5,W
03AE: TBLRD*
03B0: MOVFF FF5,03
03B4: CLRF FF8
03B6: MOVWF 42
03B8: MOVFF 03,43
03BC: MOVF 42,F
03BE: BNZ 03C4
03C0: MOVF 43,F
03C2: BZ 0426
03C4: CLRF FF8
03C6: MOVFF 3E,FF7
03CA: MOVFF 3D,FF6
03CE: TBLRD*+
03D0: MOVF FF5,W
03D2: TBLRD*
03D4: MOVFF FF5,03
03D8: CLRF FF8
03DA: MOVWF 41
.................... addr++;
03DC: INCF 3D,F
03DE: BTFSC FD8.2
03E0: INCF 3E,F
.................... LcmCurrX++;
03E2: INCF 27,F
.................... LCD_Write (dat,data);
03E4: MOVLW 01
03E6: MOVWF 48
03E8: MOVFF 41,49
03EC: RCALL 01F6
.................... if (LcmCurrX==16) LCD_setpos(0,1);
03EE: MOVF 27,W
03F0: SUBLW 10
03F2: BNZ 03FC
03F4: CLRF 42
03F6: MOVLW 01
03F8: MOVWF 43
03FA: RCALL 0338
.................... if (LcmCurrX==32) LCD_setpos(0,2);
03FC: MOVF 27,W
03FE: SUBLW 20
0400: BNZ 040A
0402: CLRF 42
0404: MOVLW 02
0406: MOVWF 43
0408: RCALL 0338
.................... if (LcmCurrX==48) LCD_setpos(0,3);
040A: MOVF 27,W
040C: SUBLW 30
040E: BNZ 0418
0410: CLRF 42
0412: MOVLW 03
0414: MOVWF 43
0416: RCALL 0338
.................... if (LcmCurrX==64) LCD_setpos(0,0);
0418: MOVF 27,W
041A: SUBLW 40
041C: BNZ 0424
041E: CLRF 42
0420: CLRF 43
0422: RCALL 0338
.................... }
0424: BRA 03A0
.................... delay_ms(1);
0426: MOVLW 01
0428: MOVWF 42
042A: RCALL 01CE
.................... }
042C: RETLW 00
.................... /*--------------显示RAM字符串----------------*/
.................... void LCDprintf(unsigned char *PrintData,unsigned char X,unsigned char Y)
.................... {
.................... unsigned char data;
.................... LCD_setpos(x,y);
.................... while(*PrintData!=0)
.................... {
.................... data=*PrintData;
.................... PrintData++;
.................... LcmCurrX++;
.................... LCD_Write (dat,data);
.................... if (LcmCurrX==16) LCD_setpos(0,1);
.................... if (LcmCurrX==32) LCD_setpos(0,2);
.................... if (LcmCurrX==48) LCD_setpos(0,3);
.................... if (LcmCurrX==64) LCD_setpos(0,0);
....................
.................... }
....................
.................... }
....................
....................
.................... /*---------------显示1个RAM汉字或字符----------------*/
.................... void LCD_disp_Putchar(unsigned char data)
.................... {
.................... LCD_Write (dat,data);
*
0678: MOVLW 01
067A: MOVWF 48
067C: MOVFF 3C,49
0680: RCALL 01F6
.................... }
0682: RETLW 00
....................
.................... /*---------------LCD显示16位数字----------------*/
.................... void LCD_disp_valueInt16(unsigned long value)
.................... {
.................... long count,val,temp;
.................... int j;
.................... val=value;
*
05B2: MOVFF 3E,42
05B6: MOVFF 3D,41
.................... temp=1;
05BA: CLRF 44
05BC: MOVLW 01
05BE: MOVWF 43
.................... count=0;
05C0: CLRF 40
05C2: CLRF 3F
.................... while((val/=10)!=0)
.................... {
05C4: MOVFF 42,47
05C8: MOVFF 41,46
05CC: CLRF 49
05CE: MOVLW 0A
05D0: MOVWF 48
05D2: RCALL 0570
05D4: MOVFF 02,42
05D8: MOVFF 01,41
05DC: MOVF 41,F
05DE: BNZ 05E4
05E0: MOVF 42,F
05E2: BZ 0604
.................... count++;
05E4: INCF 3F,F
05E6: BTFSC FD8.2
05E8: INCF 40,F
.................... temp*=10;
05EA: MOVFF 44,47
05EE: MOVFF 43,46
05F2: CLRF 49
05F4: MOVLW 0A
05F6: MOVWF 48
05F8: RCALL 048C
05FA: MOVFF 02,44
05FE: MOVFF 01,43
.................... }
0602: BRA 05C4
.................... for(j=0;j<=count;j++)
0604: CLRF 45
0606: MOVF 40,F
0608: BNZ 0610
060A: MOVF 45,W
060C: SUBWF 3F,W
060E: BNC 0676
.................... {
.................... val=value/temp;
0610: MOVFF 3E,47
0614: MOVFF 3D,46
0618: MOVFF 44,49
061C: MOVFF 43,48
0620: RCALL 0570
0622: MOVFF 02,42
0626: MOVFF 01,41
.................... value%=temp;
062A: MOVFF 3E,47
062E: MOVFF 3D,46
0632: MOVFF 44,49
0636: MOVFF 43,48
063A: RCALL 0570
063C: MOVFF 00,3D
0640: MOVFF 03,3E
.................... temp/=10;
0644: MOVFF 44,47
0648: MOVFF 43,46
064C: CLRF 49
064E: MOVLW 0A
0650: MOVWF 48
0652: RCALL 0570
0654: MOVFF 02,44
0658: MOVFF 01,43
.................... LCD_Write (dat,'0'+val);
065C: MOVLW 30
065E: ADDWF 41,W
0660: MOVWF 46
0662: MOVLW 00
0664: ADDWFC 42,W
0666: MOVWF 47
0668: MOVLW 01
066A: MOVWF 48
066C: MOVFF 46,49
0670: RCALL 01F6
.................... }
0672: INCF 45,F
0674: BRA 0606
.................... }
0676: RETLW 00
....................
....................
.................... /*---------------时钟显示8位数字----------------*/
.................... void LCD_disp_timenum(unsigned char value)
.................... {
.................... unsigned char i,j;
.................... i=value/10;
.................... j=value%10;
.................... LCD_Write (dat,'0'+i);
.................... LCD_Write (dat,'0'+j);
.................... }
....................
.................... /*---------------LCD初始化--------------------*/
.................... void init_LCD()
.................... {
.................... output_low(LCM_RST);
*
02A4: BCF F95.5
02A6: BCF F8C.5
.................... delay_ms(1);
02A8: MOVLW 01
02AA: MOVWF 42
02AC: RCALL 01CE
.................... output_high(LCM_RST);
02AE: BCF F95.5
02B0: BSF F8C.5
.................... LCD_Write (comm,0x30); /*30---基本指令动作*/
02B2: CLRF 48
02B4: MOVLW 30
02B6: MOVWF 49
02B8: RCALL 01F6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -