⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m.lst

📁 08山东电子电子竞赛智能小车程序基于PIC+红外+电子罗盘ourdev551262 包含源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
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 + -