demo.lst

来自「自己设计的pic单片机开发板源程序和说明书(内有原理图)支持pic16系列28脚」· LST 代码 · 共 2,657 行 · 第 1/5 页

LST
2,657
字号
0AA2:  MOVLW  20
0AA3:  CLRWDT
0AA4:  BTFSS  0C.4
0AA5:  GOTO   2A3
0AA6:  MOVWF  19
0AA7:  MOVLW  0A
0AA8:  CLRWDT
0AA9:  BTFSS  0C.4
0AAA:  GOTO   2A8
0AAB:  MOVWF  19
.................... 		     
.................... 	   }  
.................... 	   else  
0AAC:  GOTO   2B6
.................... 	   {  
.................... 	   		if(getc() == ESC_KEY)  
0AAD:  CLRWDT
0AAE:  BTFSS  0C.5
0AAF:  GOTO   2AD
0AB0:  MOVF   1A,W
0AB1:  SUBLW  1B
0AB2:  BTFSS  03.2
0AB3:  GOTO   2B6
.................... 			{  
.................... 				setup_adc( ADC_OFF );  
0AB4:  BCF    1F.0
.................... 				return;  
0AB5:  GOTO   2B7
.................... 			}  
.................... 	   }  
....................    }  
0AB6:  GOTO   280
.................... }  
0AB7:  BCF    0A.3
0AB8:  BSF    0A.4
0AB9:  GOTO   697 (RETURN)
....................   
....................   
....................  
.................... #include "..\demo\drv_pwm.c" 
....................  void set_pwm1(int16 fpwm,int16 duty)  
.................... {  
.................... int16	pr2_val,t2div=4;  
*
0CE7:  MOVLW  04
0CE8:  MOVWF  3D
0CE9:  CLRF   3E
.................... 	pr2_val = (MCLK/fpwm/t2div)>>2 - 1;  
0CEA:  CLRF   4D
0CEB:  MOVLW  7A
0CEC:  MOVWF  4C
0CED:  MOVLW  12
0CEE:  MOVWF  4B
0CEF:  CLRF   4A
0CF0:  CLRF   51
0CF1:  CLRF   50
0CF2:  MOVF   38,W
0CF3:  MOVWF  4F
0CF4:  MOVF   37,W
0CF5:  MOVWF  4E
0CF6:  BCF    0A.3
0CF7:  CALL   6C8
0CF8:  BSF    0A.3
0CF9:  MOVF   7A,W
0CFA:  MOVWF  42
0CFB:  MOVF   79,W
0CFC:  MOVWF  41
0CFD:  MOVF   78,W
0CFE:  MOVWF  40
0CFF:  MOVF   77,W
0D00:  MOVWF  3F
0D01:  MOVF   7A,W
0D02:  MOVWF  4D
0D03:  MOVF   79,W
0D04:  MOVWF  4C
0D05:  MOVF   78,W
0D06:  MOVWF  4B
0D07:  MOVF   77,W
0D08:  MOVWF  4A
0D09:  CLRF   51
0D0A:  CLRF   50
0D0B:  MOVF   3E,W
0D0C:  MOVWF  4F
0D0D:  MOVF   3D,W
0D0E:  MOVWF  4E
0D0F:  BCF    0A.3
0D10:  CALL   6C8
0D11:  BSF    0A.3
0D12:  MOVF   7A,W
0D13:  MOVWF  43
0D14:  MOVF   79,W
0D15:  MOVWF  42
0D16:  MOVF   78,W
0D17:  MOVWF  41
0D18:  MOVF   77,W
0D19:  MOVWF  40
0D1A:  BCF    03.0
0D1B:  RRF    7A,W
0D1C:  MOVWF  7A
0D1D:  RRF    79,W
0D1E:  MOVWF  79
0D1F:  RRF    78,W
0D20:  MOVWF  78
0D21:  RRF    77,W
0D22:  MOVWF  77
0D23:  MOVF   77,W
0D24:  MOVWF  3B
0D25:  MOVF   78,W
0D26:  MOVWF  3C
.................... 	setup_timer_2(T2_DIV_BY_4, pr2_val, 1);  
0D27:  MOVLW  00
0D28:  MOVWF  78
0D29:  IORLW  05
0D2A:  MOVWF  12
0D2B:  MOVF   3B,W
0D2C:  BSF    03.5
0D2D:  MOVWF  12
.................... 	set_pwm1_duty(duty);  
0D2E:  BCF    03.5
0D2F:  MOVF   3A,W
0D30:  MOVWF  79
0D31:  MOVF   39,W
0D32:  MOVWF  78
0D33:  RRF    79,F
0D34:  RRF    78,F
0D35:  RRF    79,F
0D36:  RRF    78,F
0D37:  RRF    79,F
0D38:  MOVF   78,W
0D39:  MOVWF  15
0D3A:  RRF    79,F
0D3B:  RRF    79,W
0D3C:  ANDLW  30
0D3D:  MOVWF  77
0D3E:  MOVF   17,W
0D3F:  ANDLW  CF
0D40:  IORWF  77,W
0D41:  MOVWF  17
.................... 	  
.................... }  
....................   
.................... void pwm1_init()  
.................... {  
.................... 	set_pwm1(2000,100);   
*
0CE0:  MOVLW  07
0CE1:  MOVWF  38
0CE2:  MOVLW  D0
0CE3:  MOVWF  37
0CE4:  CLRF   3A
0CE5:  MOVLW  64
0CE6:  MOVWF  39
.................... 	setup_ccp1(CCP_PWM);  
*
0D42:  BCF    28.2
0D43:  MOVF   28,W
0D44:  BSF    03.5
0D45:  MOVWF  07
0D46:  BCF    03.5
0D47:  BCF    07.2
0D48:  MOVLW  0C
0D49:  MOVWF  17
.................... 	output_low(drv2);		//rc2  
0D4A:  BCF    28.2
0D4B:  MOVF   28,W
0D4C:  BSF    03.5
0D4D:  MOVWF  07
0D4E:  BCF    03.5
0D4F:  BCF    07.2
.................... }  
.................... void drv_pwm()  
.................... {  
.................... int16 i;  
....................     puts("Now test the drv2 pwm function\n");  
*
0CAF:  CLRF   37
0CB0:  MOVF   37,W
0CB1:  BCF    0A.3
0CB2:  CALL   171
0CB3:  BSF    0A.3
0CB4:  IORLW  00
0CB5:  BTFSC  03.2
0CB6:  GOTO   4BD
0CB7:  INCF   37,F
0CB8:  CLRWDT
0CB9:  BTFSS  0C.4
0CBA:  GOTO   4B8
0CBB:  MOVWF  19
0CBC:  GOTO   4B0
0CBD:  MOVLW  0D
0CBE:  CLRWDT
0CBF:  BTFSS  0C.4
0CC0:  GOTO   4BE
0CC1:  MOVWF  19
0CC2:  MOVLW  0A
0CC3:  CLRWDT
0CC4:  BTFSS  0C.4
0CC5:  GOTO   4C3
0CC6:  MOVWF  19
....................     puts("adjust the ad0 to change pulse width\n");  
0CC7:  CLRF   37
0CC8:  MOVF   37,W
0CC9:  BCF    0A.3
0CCA:  CALL   195
0CCB:  BSF    0A.3
0CCC:  IORLW  00
0CCD:  BTFSC  03.2
0CCE:  GOTO   4D5
0CCF:  INCF   37,F
0CD0:  CLRWDT
0CD1:  BTFSS  0C.4
0CD2:  GOTO   4D0
0CD3:  MOVWF  19
0CD4:  GOTO   4C8
0CD5:  MOVLW  0D
0CD6:  CLRWDT
0CD7:  BTFSS  0C.4
0CD8:  GOTO   4D6
0CD9:  MOVWF  19
0CDA:  MOVLW  0A
0CDB:  CLRWDT
0CDC:  BTFSS  0C.4
0CDD:  GOTO   4DB
0CDE:  MOVWF  19
.................... 	adc_init();  
0CDF:  CALL   254
.................... 	pwm1_init();  
.................... 	while(TRUE)  
.................... 	{  
.................... 		if(kbhit())  
*
0D50:  BTFSS  0C.5
0D51:  GOTO   568
.................... 		{  
.................... 			if(getc()==ESC_KEY)  
0D52:  CLRWDT
0D53:  BTFSS  0C.5
0D54:  GOTO   552
0D55:  MOVF   1A,W
0D56:  SUBLW  1B
0D57:  BTFSS  03.2
0D58:  GOTO   568
.................... 			{  
.................... 				  
.................... 				setup_ccp1(CCP_OFF);  
0D59:  BSF    28.2
0D5A:  MOVF   28,W
0D5B:  BSF    03.5
0D5C:  MOVWF  07
0D5D:  BCF    03.5
0D5E:  CLRF   17
0D5F:  CLRF   17
.................... 				setup_adc( ADC_OFF );  
0D60:  BCF    1F.0
.................... 				output_high(drv2);  
0D61:  BCF    28.2
0D62:  MOVF   28,W
0D63:  BSF    03.5
0D64:  MOVWF  07
0D65:  BCF    03.5
0D66:  BSF    07.2
.................... 			//	input(drv2);  
.................... 				return;  
0D67:  GOTO   588
.................... 			}  
.................... 		}  
.................... 		i = read_adc();  
0D68:  BSF    1F.2
0D69:  BTFSC  1F.2
0D6A:  GOTO   569
0D6B:  BSF    03.5
0D6C:  MOVF   1E,W
0D6D:  BCF    03.5
0D6E:  MOVWF  35
0D6F:  MOVF   1E,W
0D70:  MOVWF  36
.................... 		delay_ms(20);  
0D71:  MOVLW  14
0D72:  MOVWF  3E
0D73:  CALL   0EA
.................... 	//	putc(i);  
.................... 	//	i = i >>2;  
.................... 		set_pwm1_duty(i);  
0D74:  MOVF   36,W
0D75:  MOVWF  79
0D76:  MOVF   35,W
0D77:  MOVWF  78
0D78:  RRF    79,F
0D79:  RRF    78,F
0D7A:  RRF    79,F
0D7B:  RRF    78,F
0D7C:  RRF    79,F
0D7D:  MOVF   78,W
0D7E:  MOVWF  15
0D7F:  RRF    79,F
0D80:  RRF    79,W
0D81:  ANDLW  30
0D82:  MOVWF  77
0D83:  MOVF   17,W
0D84:  ANDLW  CF
0D85:  IORWF  77,W
0D86:  MOVWF  17
.................... 	//	delay_ms(200);  
.................... 	}  
0D87:  GOTO   550
.................... }  
0D88:  BCF    0A.3
0D89:  BSF    0A.4
0D8A:  GOTO   697 (RETURN)
.................... 	  
....................  
.................... #include "..\demo\iwire.c" 
....................  /*************************************************************  
.................... ****************1wire总线操作函数*****************************  
.................... *************************************************************/  
.................... //extern int8 buffer[8];  
....................   
.................... #define  IB_RDROM 0X33     //读1820的rom命令  
.................... #define  IB_SKIP  0xcc     //1820调过命令  
.................... #define  IB_CNVT  0X44     //转换温度命令  
.................... #define  IB_COPY  0X48     //COPY SCRATCHPAD  
.................... #define  IB_RDPAD 0XBE     //READ SCRATCHPAD  
.................... #define  IB_WRPAD 0X4E     //WRITE SCRATCHPAD  
.................... #define  IB_RECALL  0XB8     //RECALL EEPROM  
.................... #define  IB_RDPOW    0XB4     //READ POWER SUPLY COMMAND  
.................... int8 ibus_reset(){  
.................... int8 i;  
....................    output_low(iwire);  
*
0F93:  BCF    28.5
0F94:  MOVF   28,W
0F95:  BSF    03.5
0F96:  MOVWF  07
0F97:  BCF    03.5
0F98:  BCF    07.5
....................    delay_us(500);  
0F99:  CLRWDT
0F9A:  MOVLW  02
0F9B:  MOVWF  39
0F9C:  MOVLW  F7
0F9D:  MOVWF  3A
0F9E:  CALL   782
0F9F:  DECFSZ 39,F
0FA0:  GOTO   79C
....................    output_float(iwire);  
0FA1:  BSF    28.5
0FA2:  MOVF   28,W
0FA3:  BSF    03.5
0FA4:  MOVWF  07
....................    delay_us(60);  
0FA5:  CLRWDT
0FA6:  MOVLW  27
0FA7:  MOVWF  77
0FA8:  DECFSZ 77,F
0FA9:  GOTO   7A8
0FAA:  NOP
....................    if(!input(iwire))  
0FAB:  BCF    03.5
0FAC:  BSF    28.5
0FAD:  MOVF   28,W
0FAE:  BSF    03.5
0FAF:  MOVWF  07
0FB0:  BCF    03.5
0FB1:  BTFSC  07.5
0FB2:  GOTO   7B5
....................    {  
....................        i=0;  
0FB3:  CLRF   38
....................    }  
....................    else{  
0FB4:  GOTO   7B7
....................       i=0xff;  
0FB5:  MOVLW  FF
0FB6:  MOVWF  38
....................    }  
....................    delay_us(400);  
0FB7:  CLRWDT
0FB8:  MOVLW  03
0FB9:  MOVWF  39
0FBA:  MOVLW  83
0FBB:  MOVWF  3A
0FBC:  CALL   782
0FBD:  DECFSZ 39,F
0FBE:  GOTO   7BA
....................    return(i);  
0FBF:  MOVF   38,W
0FC0:  MOVWF  78
.................... }  
0FC1:  RETLW  00
.................... //-------------------------------  
.................... //-------------------------------  
.................... int8   read_byte(){  
.................... int8   value ,i;  
....................    value=0;  
*
1093:  CLRF   3B
....................    for(i=0;i<8;i++){  
1094:  CLRF   3C
1095:  MOVF   3C,W
1096:  SUBLW  07
1097:  BTFSS  03.0
1098:  GOTO   0CB
....................       output_low(iwire);  
1099:  BCF    28.5
109A:  MOVF   28,W
109B:  BSF    03.5
109C:  MOVWF  07
109D:  BCF    03.5
109E:  BCF    07.5
....................       delay_us(3);  
109F:  CLRWDT
10A0:  NOP
10A1:  NOP
10A2:  NOP
10A3:  NOP
10A4:  NOP
.................... 	  output_float(iwire);  
10A5:  BSF    28.5
10A6:  MOVF   28,W
10A7:  BSF    03.5
10A8:  MOVWF  07
.................... 	  delay_us(6);  
10A9:  CLRWDT
10AA:  MOVLW  03
10AB:  MOVWF  77
10AC:  DECFSZ 77,F
10AD:  GOTO   0AC
10AE:  NOP
....................       if(input(iwire)){  
10AF:  BCF    03.5
10B0:  BSF    28.5
10B1:  MOVF   28,W
10B2:  BSF    03.5
10B3:  MOVWF  07
10B4:  BCF    03.5
10B5:  BTFSS  07.5
10B6:  GOTO   0C3
....................          bit_set(value,i);  
10B7:  MOVLW  01
10B8:  MOVWF  77
10B9:  MOVF   3C,W
10BA:  MOVWF  78
10BB:  BTFSC  03.2
10BC:  GOTO   0C1
10BD:  BCF    03.0
10BE:  RLF    77,F
10BF:  DECFSZ 78,F
10C0:  GOTO   0BD
10C1:  MOVF   77,W
10C2:  IORWF  3B,F
....................       }  
....................       delay_us(60);     //读时隙至少需要60us  
10C3:  CLRWDT
10C4:  MOVLW  27
10C5:  MOVWF  77
10C6:  DECFSZ 77,F
10C7:  GOTO   0C6
10C8:  NOP
....................    }  
10C9:  INCF   3C,F
10CA:  GOTO   095
....................    return(value);  
10CB:  MOVF   3B,W
10CC:  MOVWF  78
.................... }  
10CD:  RETLW  00
.................... //---------------------------------  
.................... //---------------------------------  
.................... void  write_byte(int bt){  
.................... short  b;  
.................... int8 i;  
....................    for(i=0;i<8;i++){  
*
0FC2:  CLRF   3D
0FC3:  MOVF   3D,W
0FC4:  SUBLW  07
0FC5:  BTFSS  03.0
0FC6:  GOTO   7F0
....................       if(bit_test(bt,i)){  
0FC7:  MOVF   3B,W
0FC8:  MOVWF  77
0FC9:  MOVF   3D,W
0FCA:  MOVWF  78
0FCB:  BTFSC  03.2
0FCC:  GOTO   7D1
0FCD:  BCF    03.0
0FCE:  RRF    77,F
0FCF:  DECFSZ 78,F
0FD0:  GOTO   7CD
0FD1:  BTFSS  77.0
0FD2:  GOTO   7D5
....................         b=1;  
0FD3:  BSF    3C.0
....................       }  
....................       else{  
0FD4:  GOTO   7D6
....................          b=0;  
0FD5:  BCF    3C.0
....................       }  
....................       output_low(iwire);  
0FD6:  BCF    28.5
0FD7:  MOVF   28,W
0FD8:  BSF    03.5
0FD9:  MOVWF  07
0FDA:  BCF    03.5
0FDB:  BCF    07.5
....................       //output_high(iwire);  
....................       if(b)  
0FDC:  BTFSS  3C.0
0FDD:  GOTO   7E3
.................... 	  {  
.................... 		output_float(iwire);  
0FDE:  BSF    28.5
0FDF:  MOVF   28,W
0FE0:  BSF    03.5
0FE1:  MOVWF  07
0FE2:  BCF    03.5
.................... 	  }  
....................       delay_us(60);  
0FE3:  CLRWDT
0FE4:  MOVLW  27
0FE5:  MOVWF  77
0FE6:  DECFSZ 77,F
0FE7:  GOTO   7E6
0FE8:  NOP
....................       output_float(iwire);   //trec>=1us.一位写入结束。  
0FE9:  BSF    28.5
0FEA:  MOVF   28,W
0FEB:  BSF    03.5
0FEC:  MOVWF  07
....................    }  
0FED:  BCF    03.5

⌨️ 快捷键说明

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