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 + -
显示快捷键?