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

📄 demo.lst

📁 自己设计的pic单片机开发板源程序和说明书(内有原理图)支持pic16系列28脚和40脚器件。串口输出信息。4个LED数码管驱动;4个LED驱动;4个按键驱动;1个RS232接口;1个RS485接口;
💻 LST
📖 第 1 页 / 共 5 页
字号:
0FEE:  INCF   3D,F
0FEF:  GOTO   7C3
....................   // delay_us(60);  
.................... }  
0FF0:  RETLW  00
.................... //----------------------------------  
.................... void  read_rom(){  
.................... int8 i;  
....................    write_byte(IB_RDROM);  
*
10D3:  MOVLW  33
10D4:  MOVWF  3B
10D5:  BCF    0A.4
10D6:  BSF    0A.3
10D7:  CALL   7C2
10D8:  BSF    0A.4
10D9:  BCF    0A.3
....................    for(i=0;i<8;i++){  
10DA:  CLRF   38
10DB:  MOVF   38,W
10DC:  SUBLW  07
10DD:  BTFSS  03.0
10DE:  GOTO   0F3
....................       buffer[i]=read_byte();  
10DF:  MOVLW  29
10E0:  ADDWF  38,W
10E1:  MOVWF  78
10E2:  CLRF   7A
10E3:  BTFSC  03.0
10E4:  INCF   7A,F
10E5:  MOVF   78,W
10E6:  MOVWF  39
10E7:  MOVF   7A,W
10E8:  MOVWF  3A
10E9:  CALL   093
10EA:  MOVF   39,W
10EB:  MOVWF  04
10EC:  BCF    03.7
10ED:  BTFSC  3A.0
10EE:  BSF    03.7
10EF:  MOVF   78,W
10F0:  MOVWF  00
....................    }  
10F1:  INCF   38,F
10F2:  GOTO   0DB
.................... }  
.................... //----------------------------------  
.................... void  skip(){  
....................    write_byte(IB_SKIP);  
*
0FF1:  MOVLW  CC
0FF2:  MOVWF  3B
0FF3:  CALL   7C2
.................... }  
0FF4:  RETLW  00
.................... //----------------------------------  
.................... void  write_scratchpad(){  
.................... int8 i;  
....................    write_byte(IB_WRPAD);  
*
114D:  MOVLW  4E
114E:  MOVWF  3B
114F:  BCF    0A.4
1150:  BSF    0A.3
1151:  CALL   7C2
1152:  BSF    0A.4
1153:  BCF    0A.3
....................    for(i=0;i<3;i++){  
1154:  CLRF   38
1155:  MOVF   38,W
1156:  SUBLW  02
1157:  BTFSS  03.0
1158:  GOTO   168
....................       write_byte(buffer[i+2]);  
1159:  MOVLW  02
115A:  ADDWF  38,W
115B:  ADDLW  29
115C:  MOVWF  04
115D:  BCF    03.7
115E:  MOVF   00,W
115F:  MOVWF  3A
1160:  MOVWF  3B
1161:  BCF    0A.4
1162:  BSF    0A.3
1163:  CALL   7C2
1164:  BSF    0A.4
1165:  BCF    0A.3
....................    }  
1166:  INCF   38,F
1167:  GOTO   155
.................... }  
.................... //----------------------------------  
.................... void  read_scratchpad(){  
.................... int8 i;  
.................... write_byte(IB_RDPAD);  
*
111B:  MOVLW  BE
111C:  MOVWF  3B
111D:  BCF    0A.4
111E:  BSF    0A.3
111F:  CALL   7C2
1120:  BSF    0A.4
1121:  BCF    0A.3
.................... for(i=0;i<5;i++){  
1122:  CLRF   38
1123:  MOVF   38,W
1124:  SUBLW  04
1125:  BTFSS  03.0
1126:  GOTO   13B
....................    buffer[i]=read_byte();  
1127:  MOVLW  29
1128:  ADDWF  38,W
1129:  MOVWF  78
112A:  CLRF   7A
112B:  BTFSC  03.0
112C:  INCF   7A,F
112D:  MOVF   78,W
112E:  MOVWF  39
112F:  MOVF   7A,W
1130:  MOVWF  3A
1131:  CALL   093
1132:  MOVF   39,W
1133:  MOVWF  04
1134:  BCF    03.7
1135:  BTFSC  3A.0
1136:  BSF    03.7
1137:  MOVF   78,W
1138:  MOVWF  00
.................... }  
1139:  INCF   38,F
113A:  GOTO   123
.................... }  
.................... //----------------------------------  
.................... void  read_temperature(){        //读转换温度,同读scratchpad命令一样,只是读pad的前2个字节  
.................... int8 i;  
....................    write_byte(IB_RDPAD);  
*
119D:  MOVLW  BE
119E:  MOVWF  3B
119F:  BCF    0A.4
11A0:  BSF    0A.3
11A1:  CALL   7C2
11A2:  BSF    0A.4
11A3:  BCF    0A.3
....................    for(i=0;i<2;i++){  
11A4:  CLRF   38
11A5:  MOVF   38,W
11A6:  SUBLW  01
11A7:  BTFSS  03.0
11A8:  GOTO   1BD
....................       buffer[i]=read_byte();  
11A9:  MOVLW  29
11AA:  ADDWF  38,W
11AB:  MOVWF  78
11AC:  CLRF   7A
11AD:  BTFSC  03.0
11AE:  INCF   7A,F
11AF:  MOVF   78,W
11B0:  MOVWF  39
11B1:  MOVF   7A,W
11B2:  MOVWF  3A
11B3:  CALL   093
11B4:  MOVF   39,W
11B5:  MOVWF  04
11B6:  BCF    03.7
11B7:  BTFSC  3A.0
11B8:  BSF    03.7
11B9:  MOVF   78,W
11BA:  MOVWF  00
....................    }  
11BB:  INCF   38,F
11BC:  GOTO   1A5
.................... }  
.................... //----------------------------------  
.................... void  copy_scratchpad(){  
....................    write_byte(IB_COPY);  
*
1168:  MOVLW  48
1169:  MOVWF  3B
116A:  BCF    0A.4
116B:  BSF    0A.3
116C:  CALL   7C2
116D:  BSF    0A.4
116E:  BCF    0A.3
....................    delay_ms(10);  
116F:  MOVLW  0A
1170:  MOVWF  3E
1171:  BCF    0A.4
1172:  BSF    0A.3
1173:  CALL   0EA
1174:  BSF    0A.4
1175:  BCF    0A.3
1176:  NOP
.................... }  
.................... //----------------------------------  
.................... void  convert_t(){  
.................... //long	x=0;  
....................    write_byte(IB_CNVT);  
*
1181:  MOVLW  44
1182:  MOVWF  3B
1183:  BCF    0A.4
1184:  BSF    0A.3
1185:  CALL   7C2
1186:  BSF    0A.4
1187:  BCF    0A.3
.................... /*  
....................    while(++x<2000)  
.................... 	{  
.................... 		if(read_byte()==0xff)  
.................... 		{  
.................... 			break;  
.................... 		}  
.................... 	}  
.................... */  
....................   
.................... 	delay_ms(400);  
1188:  MOVLW  02
1189:  MOVWF  38
118A:  MOVLW  C8
118B:  MOVWF  3E
118C:  BCF    0A.4
118D:  BSF    0A.3
118E:  CALL   0EA
118F:  BSF    0A.4
1190:  BCF    0A.3
1191:  DECFSZ 38,F
1192:  GOTO   18A
.................... }  
.................... //----------------------------------  
.................... void  recall_eeprom(){  
....................    write_byte(IB_RECALL);  
....................    while(read_byte()!=0xff);        //1820在操作完成以后,数据线上全部为1,反之为0。  
.................... }  
.................... /****************************************************************/  
.................... /*******************************/  
.................... void Test_1820()  
.................... {  
.................... int8 var1,var2,t;  
.................... while(TRUE)  
.................... {  
....................    ibus_reset();  
*
10CE:  BCF    0A.4
10CF:  BSF    0A.3
10D0:  CALL   793
10D1:  BSF    0A.4
10D2:  BCF    0A.3
....................    read_rom();  
....................    while(buffer[0]!=0x28){  
*
10F3:  MOVF   29,W
10F4:  SUBLW  28
10F5:  BTFSC  03.2
10F6:  GOTO   111
....................       puts("There is not a DS1820. Please check the circurt\n");  
10F7:  CLRF   38
10F8:  MOVF   38,W
10F9:  BCF    0A.4
10FA:  CALL   1BF
10FB:  BSF    0A.4
10FC:  IORLW  00
10FD:  BTFSC  03.2
10FE:  GOTO   105
10FF:  INCF   38,F
1100:  CLRWDT
1101:  BTFSS  0C.4
1102:  GOTO   100
1103:  MOVWF  19
1104:  GOTO   0F8
1105:  MOVLW  0D
1106:  CLRWDT
1107:  BTFSS  0C.4
1108:  GOTO   106
1109:  MOVWF  19
110A:  MOVLW  0A
110B:  CLRWDT
110C:  BTFSS  0C.4
110D:  GOTO   10B
110E:  MOVWF  19
.................... 	  return;  
110F:  GOTO   1F3
.................... 	    
....................    }//判断有没有ds1820  
1110:  GOTO   0F3
....................    //--------------------  
....................   ibus_reset();  
1111:  BCF    0A.4
1112:  BSF    0A.3
1113:  CALL   793
1114:  BSF    0A.4
1115:  BCF    0A.3
....................   skip();  
1116:  BCF    0A.4
1117:  BSF    0A.3
1118:  CALL   7F1
1119:  BSF    0A.4
111A:  BCF    0A.3
....................   read_scratchpad();  
....................   buffer[4]&=0x60;  
*
113B:  MOVLW  60
113C:  ANDWF  2D,F
....................   if(buffer[4]!=0x40){  
113D:  MOVF   2D,W
113E:  SUBLW  40
113F:  BTFSC  03.2
1140:  GOTO   177
....................       buffer[4]=0x5f;     //11bit convert  
1141:  MOVLW  5F
1142:  MOVWF  2D
....................       ibus_reset();  
1143:  BCF    0A.4
1144:  BSF    0A.3
1145:  CALL   793
1146:  BSF    0A.4
1147:  BCF    0A.3
....................       skip();  
1148:  BCF    0A.4
1149:  BSF    0A.3
114A:  CALL   7F1
114B:  BSF    0A.4
114C:  BCF    0A.3
....................       write_scratchpad();  
....................       copy_scratchpad();  
....................   }  
....................    ibus_reset();  
*
1177:  BCF    0A.4
1178:  BSF    0A.3
1179:  CALL   793
117A:  BSF    0A.4
117B:  BCF    0A.3
....................    skip();  
117C:  BCF    0A.4
117D:  BSF    0A.3
117E:  CALL   7F1
117F:  BSF    0A.4
1180:  BCF    0A.3
....................    convert_t();  
....................    ibus_reset();  
*
1193:  BCF    0A.4
1194:  BSF    0A.3
1195:  CALL   793
1196:  BSF    0A.4
1197:  BCF    0A.3
....................    skip();  
1198:  BCF    0A.4
1199:  BSF    0A.3
119A:  CALL   7F1
119B:  BSF    0A.4
119C:  BCF    0A.3
....................    read_temperature();  
....................    var1=(buffer[1]&0x0f)<<4;  
*
11BD:  MOVF   2A,W
11BE:  ANDLW  0F
11BF:  MOVWF  77
11C0:  SWAPF  77,W
11C1:  MOVWF  35
11C2:  MOVLW  F0
11C3:  ANDWF  35,F
....................    var2=buffer[0]>>4;  
11C4:  SWAPF  29,W
11C5:  MOVWF  36
11C6:  MOVLW  0F
11C7:  ANDWF  36,F
....................    t=var1|var2;      //t是当前测量的温度,没有小数部分。  
11C8:  MOVF   35,W
11C9:  IORWF  36,W
11CA:  MOVWF  37
.................... 	//putc(t);  
.................... 	printf("Temperature is %d\n",t);  
11CB:  CLRF   38
11CC:  MOVF   38,W
11CD:  BCF    0A.4
11CE:  CALL   1F4
11CF:  BSF    0A.4
11D0:  INCF   38,F
11D1:  MOVWF  77
11D2:  CLRWDT
11D3:  BTFSS  0C.4
11D4:  GOTO   1D2
11D5:  MOVWF  19
11D6:  MOVLW  0F
11D7:  SUBWF  38,W
11D8:  BTFSS  03.2
11D9:  GOTO   1CC
11DA:  MOVF   37,W
11DB:  MOVWF  39
11DC:  MOVLW  18
11DD:  MOVWF  3A
11DE:  BCF    0A.4
11DF:  BSF    0A.3
11E0:  CALL   722
11E1:  BSF    0A.4
11E2:  BCF    0A.3
11E3:  MOVLW  0A
11E4:  CLRWDT
11E5:  BTFSS  0C.4
11E6:  GOTO   1E4
11E7:  MOVWF  19
....................    if(kbhit())  
11E8:  BTFSS  0C.5
11E9:  GOTO   1F2
.................... 	{  
.................... 		if(getc()== ESC_KEY)  
11EA:  CLRWDT
11EB:  BTFSS  0C.5
11EC:  GOTO   1EA
11ED:  MOVF   1A,W
11EE:  SUBLW  1B
11EF:  BTFSS  03.2
11F0:  GOTO   1F2
.................... 		{  
.................... 			return;  
11F1:  GOTO   1F3
.................... 		}  
.................... 	}  
.................... }  
11F2:  GOTO   0CE
.................... }  
11F3:  BCF    0A.3
11F4:  BSF    0A.4
11F5:  GOTO   697 (RETURN)
....................  
.................... #include "..\demo\key.c" 
....................  //#include "..\demo\def.h"  
....................   
....................   
.................... void key_init()  
.................... {  
.................... 	enable_interrupts(GLOBAL);  
*
1306:  MOVLW  C0
1307:  IORWF  0B,F
.................... 	enable_interrupts(INT_RB);  
1308:  BSF    0B.3
.................... 	input(key1);  
1309:  BSF    03.5
130A:  BSF    06.7
.................... 	input(key2);  
130B:  BSF    06.6
.................... 	input(key3);  
130C:  BSF    06.5
.................... 	input(key4);  
130D:  BSF    06.4
.................... }  
.................... //==============================================  
.................... int8 get_key()  
.................... {  
.................... 	key_init();  
.................... 	if(bit_key_prss)  
.................... 	{  
.................... 		keyval = keyval>>4;  
.................... 		keyval &= 0x0f;  
.................... 		bit_key_prss = 0;  
.................... 	}  
.................... 	else  
.................... 	{  
.................... 		keyval = 0xff;  
.................... 	}  
.................... 	return(keyval);  
.................... }  
.................... //==============================================  
.................... void Test_key()  
.................... {  
.................... 	bit_key_prss = 0;  
*
12ED:  BCF    32.0
.................... 	puts("please press a key in board.ESC to escape\n");  
12EE:  CLRF   35
12EF:  MOVF   35,W
12F0:  BCF    0A.4
12F1:  CALL   20E
12F2:  BSF    0A.4
12F3:  IORLW  00
12F4:  BTFSC  03.2
12F5:  GOTO   2FC
12F6:  INCF   35,F
12F7:  CLRWDT
12F8:  BTFSS  0C.4
12F9:  GOTO   2F7
12FA:  MOVWF  19
12FB:  GOTO   2EF
12FC:  MOVLW  0D
12FD:  CLRWDT
12FE:  BTFSS  0C.4
12FF:  GOTO   2FD
1300:  MOVWF  19
1301:  MOVLW  0A
1302:  CLRWDT
1303:  BTFSS  0C.4
1304:  GOTO   302
1305:  MOVWF  19
.................... 	key_init();  
.................... 	while(TRUE)  
.................... 	{	  
.................... 		if(bit_key_prss)  
*
130E:  BCF    03.5
130F:  BTFSS  32.0
1310:  GOTO   365
.................... 		{  
.................... 			keyval = keyval>>4;  
1311:  SWAPF  31,F
1312:  MOVLW  0F
1313:  ANDWF  31,F
.................... 			keyval &= 0x0f;  
1314:  ANDWF  31,F
.................... 			switch(keyval)  
.................... 				{  
1315:  MOVF   31,W
1316:  XORLW  07
1317:  BTFSC  03.2
1318:  GOTO   323
1319:  XORLW  0C
131A:  BTFSC  03.2
131B:  GOTO   333
131C:  XORLW  06
131D:  BTFSC  03.2
131E:  GOTO   343
131F:  XORLW  03
1320:  BTFSC  03.2
1321:  GOTO   353
1322:  GOTO   363
.................... 					case 0x07:  
.................... 						printf("key1 pressed

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -