📄 demo.lst
字号:
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 + -