📄 demo.lst
字号:
.................... //----------------------------------
.................... void iic_stop(){
.................... i2c_stop();
*
07F4: BSF 03.5
07F5: BSF 11.2
07F6: BTFSC 11.2
07F7: GOTO 7F6
.................... }
07F8: BCF 03.5
07F9: RETLW 00
....................
.................... //-----------------------------------
.................... void wriic(int m,int subad,int*p){
.................... int8 i;
.................... i2c_write(subad);
*
0903: MOVF 3E,W
0904: MOVWF 43
0905: BCF 0A.3
0906: CALL 7E4
0907: BSF 0A.3
.................... for(i=0;i<m;i++){
0908: CLRF 41
0909: MOVF 3D,W
090A: SUBWF 41,W
090B: BTFSC 03.0
090C: GOTO 11F
.................... i2c_write(*p);
090D: MOVF 40,W
090E: MOVWF 7A
090F: MOVF 3F,W
0910: MOVWF 04
0911: BCF 03.7
0912: BTFSC 40.0
0913: BSF 03.7
0914: MOVF 00,W
0915: MOVWF 42
0916: MOVWF 43
0917: BCF 0A.3
0918: CALL 7E4
0919: BSF 0A.3
.................... p++;
091A: INCF 3F,F
091B: BTFSC 03.2
091C: INCF 40,F
.................... }
091D: INCF 41,F
091E: GOTO 109
.................... iic_stop();
091F: BCF 0A.3
0920: CALL 7F4
0921: BSF 0A.3
.................... }
0922: RETLW 00
....................
.................... /************I2C总线连续读操作******************/
.................... /**/
.................... void reiic(int sla,int m,int *p){
.................... int8 i;
.................... iic_start();
*
0897: BCF 0A.3
0898: CALL 7D4
0899: BSF 0A.3
.................... i2c_write(sla);
089A: MOVF 3D,W
089B: MOVWF 43
089C: BCF 0A.3
089D: CALL 7E4
089E: BSF 0A.3
.................... for(i=1;i<m;i++){
089F: MOVLW 01
08A0: MOVWF 41
08A1: MOVF 3E,W
08A2: SUBWF 41,W
08A3: BTFSC 03.0
08A4: GOTO 0B6
.................... *p=i2c_read();
08A5: MOVF 40,W
08A6: MOVWF 7A
08A7: MOVF 3F,W
08A8: MOVWF 04
08A9: BCF 03.7
08AA: BTFSC 40.0
08AB: BSF 03.7
08AC: MOVLW 01
08AD: MOVWF 77
08AE: CALL 088
08AF: MOVF 78,W
08B0: MOVWF 00
.................... p++;
08B1: INCF 3F,F
08B2: BTFSC 03.2
08B3: INCF 40,F
.................... }
08B4: INCF 41,F
08B5: GOTO 0A1
.................... *p=i2c_read(0);
08B6: MOVF 40,W
08B7: MOVWF 7A
08B8: MOVF 3F,W
08B9: MOVWF 04
08BA: BCF 03.7
08BB: BTFSC 40.0
08BC: BSF 03.7
08BD: CLRF 77
08BE: CALL 088
08BF: MOVF 78,W
08C0: MOVWF 00
.................... iic_stop();
08C1: BCF 0A.3
08C2: CALL 7F4
08C3: BSF 0A.3
.................... }
08C4: RETLW 00
.................... //------------------------------------
.................... //***********************************/
.................... void Test_iic()
.................... {
.................... int8 i;
.................... puts("write 0~7 to IIC Bus eeprom .and then read it\n");
*
1000: CLRF 36
1001: MOVF 36,W
1002: BCF 0A.4
1003: CALL 048
1004: BSF 0A.4
1005: IORLW 00
1006: BTFSC 03.2
1007: GOTO 00E
1008: INCF 36,F
1009: CLRWDT
100A: BTFSS 0C.4
100B: GOTO 009
100C: MOVWF 19
100D: GOTO 001
100E: MOVLW 0D
100F: CLRWDT
1010: BTFSS 0C.4
1011: GOTO 00F
1012: MOVWF 19
1013: MOVLW 0A
1014: CLRWDT
1015: BTFSS 0C.4
1016: GOTO 014
1017: MOVWF 19
.................... for(i = 0;i < 8; i++)
1018: CLRF 35
1019: MOVF 35,W
101A: SUBLW 07
101B: BTFSS 03.0
101C: GOTO 033
.................... {
.................... buffer[i] = i;
101D: MOVLW 29
101E: ADDWF 35,W
101F: MOVWF 04
1020: BCF 03.7
1021: MOVF 35,W
1022: MOVWF 00
.................... printf("%d",buffer[i]);
1023: MOVLW 29
1024: ADDWF 35,W
1025: MOVWF 04
1026: BCF 03.7
1027: MOVF 00,W
1028: MOVWF 36
1029: MOVWF 39
102A: MOVLW 18
102B: MOVWF 3A
102C: BCF 0A.4
102D: BSF 0A.3
102E: CALL 722
102F: BSF 0A.4
1030: BCF 0A.3
.................... }
1031: INCF 35,F
1032: GOTO 019
.................... printf("\n");
1033: MOVLW 0A
1034: CLRWDT
1035: BTFSS 0C.4
1036: GOTO 034
1037: MOVWF 19
.................... iic_start();
1038: BCF 0A.4
1039: CALL 7D4
103A: BSF 0A.4
.................... i2c_write(ADDR_IIC_EEP);
103B: MOVLW AC
103C: MOVWF 43
103D: BCF 0A.4
103E: CALL 7E4
103F: BSF 0A.4
.................... wriic(8,0,buffer);
1040: MOVLW 08
1041: MOVWF 3D
1042: CLRF 3E
1043: CLRF 40
1044: MOVLW 29
1045: MOVWF 3F
1046: BCF 0A.4
1047: BSF 0A.3
1048: CALL 103
1049: BSF 0A.4
104A: BCF 0A.3
.................... for(i = 0;i < 8; i++)
104B: CLRF 35
104C: MOVF 35,W
104D: SUBLW 07
104E: BTFSS 03.0
104F: GOTO 057
.................... {
.................... buffer[i] = 0;
1050: MOVLW 29
1051: ADDWF 35,W
1052: MOVWF 04
1053: BCF 03.7
1054: CLRF 00
.................... }
1055: INCF 35,F
1056: GOTO 04C
.................... delay_ms(10); //delay 10 ms
1057: MOVLW 0A
1058: MOVWF 3E
1059: BCF 0A.4
105A: BSF 0A.3
105B: CALL 0EA
105C: BSF 0A.4
105D: BCF 0A.3
.................... iic_start();
105E: BCF 0A.4
105F: CALL 7D4
1060: BSF 0A.4
.................... i2c_write(ADDR_IIC_EEP);
1061: MOVLW AC
1062: MOVWF 43
1063: BCF 0A.4
1064: CALL 7E4
1065: BSF 0A.4
.................... i2c_write(0);
1066: CLRF 43
1067: BCF 0A.4
1068: CALL 7E4
1069: BSF 0A.4
.................... reiic(ADDR_IIC_EEP+1,8,buffer);
106A: MOVLW AD
106B: MOVWF 3D
106C: MOVLW 08
106D: MOVWF 3E
106E: CLRF 40
106F: MOVLW 29
1070: MOVWF 3F
1071: BCF 0A.4
1072: BSF 0A.3
1073: CALL 097
1074: BSF 0A.4
1075: BCF 0A.3
....................
.................... for(i = 0;i < 8; i++)
1076: CLRF 35
1077: MOVF 35,W
1078: SUBLW 07
1079: BTFSS 03.0
107A: GOTO 08B
.................... {
.................... printf("%d",buffer[i]);
107B: MOVLW 29
107C: ADDWF 35,W
107D: MOVWF 04
107E: BCF 03.7
107F: MOVF 00,W
1080: MOVWF 36
1081: MOVWF 39
1082: MOVLW 18
1083: MOVWF 3A
1084: BCF 0A.4
1085: BSF 0A.3
1086: CALL 722
1087: BSF 0A.4
1088: BCF 0A.3
.................... }
1089: INCF 35,F
108A: GOTO 077
.................... printf("\n");
108B: MOVLW 0A
108C: CLRWDT
108D: BTFSS 0C.4
108E: GOTO 08C
108F: MOVWF 19
.................... }
1090: BCF 0A.3
1091: BSF 0A.4
1092: GOTO 697 (RETURN)
....................
....................
.................... #include "..\demo\beep.c"
.................... /*#include "..\demo\def.h"
.................... #include "..\demo\demo.h"
.................... #include "..\demo\PIC_EVB.h"*/
.................... void set_pwm2(int16 fpwm)
.................... {
.................... int16 duty;
.................... int8 pr2_val,t2div= 16;
*
070B: MOVLW 10
070C: MOVWF 3F
.................... pr2_val = (MCLK/fpwm/t2div)>>2 - 1; // mclk/4/fpwm/t2div-1
070D: CLRF 4D
070E: MOVLW 7A
070F: MOVWF 4C
0710: MOVLW 12
0711: MOVWF 4B
0712: CLRF 4A
0713: CLRF 51
0714: CLRF 50
0715: MOVF 3B,W
0716: MOVWF 4F
0717: MOVF 3A,W
0718: MOVWF 4E
0719: CALL 6C8
071A: MOVF 7A,W
071B: MOVWF 43
071C: MOVF 79,W
071D: MOVWF 42
071E: MOVF 78,W
071F: MOVWF 41
0720: MOVF 77,W
0721: MOVWF 40
0722: MOVF 7A,W
0723: MOVWF 4D
0724: MOVF 79,W
0725: MOVWF 4C
0726: MOVF 78,W
0727: MOVWF 4B
0728: MOVF 77,W
0729: MOVWF 4A
072A: CLRF 51
072B: CLRF 50
072C: CLRF 4F
072D: MOVF 3F,W
072E: MOVWF 4E
072F: CALL 6C8
0730: MOVF 7A,W
0731: MOVWF 44
0732: MOVF 79,W
0733: MOVWF 43
0734: MOVF 78,W
0735: MOVWF 42
0736: MOVF 77,W
0737: MOVWF 41
0738: BCF 03.0
0739: RRF 7A,W
073A: MOVWF 7A
073B: RRF 79,W
073C: MOVWF 79
073D: RRF 78,W
073E: MOVWF 78
073F: RRF 77,W
0740: MOVWF 77
0741: MOVF 77,W
0742: MOVWF 3E
.................... duty = (pr2_val+1)<<1; //50% duty.
0743: MOVLW 01
0744: ADDWF 3E,W
0745: MOVWF 79
0746: BCF 03.0
0747: RLF 79,W
0748: MOVWF 3C
0749: CLRF 3D
074A: BTFSC 03.0
074B: INCF 3D,F
.................... //ccsc defined: duty = Tduty/(t2div*Tclk)
.................... //Tperiod = Tclk*4*t2div*(pr2+1);
.................... //pwm is 50%,so Tduty = Tperiod / 2
.................... //so duty = Tperiod/2/t2div/Tclk=2*(pr2+1)
....................
.................... setup_timer_2(T2_DIV_BY_16, pr2_val, 1);
074C: MOVLW 00
074D: MOVWF 78
074E: IORLW 06
074F: MOVWF 12
0750: MOVF 3E,W
0751: BSF 03.5
0752: MOVWF 12
.................... set_pwm2_duty(duty);
0753: BCF 03.5
0754: MOVF 3D,W
0755: MOVWF 79
0756: MOVF 3C,W
0757: MOVWF 78
0758: RRF 79,F
0759: RRF 78,F
075A: RRF 79,F
075B: RRF 78,F
075C: RRF 79,F
075D: MOVF 78,W
075E: MOVWF 1B
075F: RRF 79,F
0760: RRF 79,W
0761: ANDLW 30
0762: MOVWF 77
0763: MOVF 1D,W
0764: ANDLW CF
0765: IORWF 77,W
0766: MOVWF 1D
.................... }
0767: RETLW 00
....................
....................
.................... int8 Test_beep()
.................... {
.................... int16 duty,fpwm;
.................... int8 i;
.................... fpwm = 1000; //1000hz.
*
0800: MOVLW 03
0801: MOVWF 38
0802: MOVLW E8
0803: MOVWF 37
.................... set_pwm2(fpwm);
0804: MOVF 38,W
0805: MOVWF 3B
0806: MOVF 37,W
0807: MOVWF 3A
0808: BCF 0A.3
0809: CALL 70B
080A: BSF 0A.3
.................... setup_ccp2(CCP_PWM);
080B: BCF 28.1
080C: MOVF 28,W
080D: BSF 03.5
080E: MOVWF 07
080F: BCF 03.5
0810: BCF 07.1
0811: MOVLW 0C
0812: MOVWF 1D
.................... // set_tris_c(0xfd);
.................... output_low(beep);
0813: BCF 28.1
0814: MOVF 28,W
0815: BSF 03.5
0816: MOVWF 07
0817: BCF 03.5
0818: BCF 07.1
.................... while(TRUE)
.................... {
.................... i = getc();
0819: CLRWDT
081A: BTFSS 0C.5
081B: GOTO 019
081C: MOVF 1A,W
081D: MOVWF 39
.................... if(i == '=')
081E: MOVF 39,W
081F: SUBLW 3D
0820: BTFSS 03.2
0821: GOTO 046
.................... {
....................
.................... if(fpwm<20000)
0822: MOVF 38,W
0823: SUBLW 4E
0824: BTFSS 03.0
0825: GOTO 045
0826: BTFSS 03.2
0827: GOTO 02C
0828: MOVF 37,W
0829: SUBLW 1F
082A: BTFSS 03.0
082B: GOTO 045
.................... {
.................... fpwm+=100;
082C: MOVLW 64
082D: ADDWF 37,F
082E: BTFSC 03.0
082F: INCF 38,F
.................... set_pwm2(fpwm);
0830: MOVF 38,W
0831: MOVWF 3B
0832: MOVF 37,W
0833: MOVWF 3A
0834: BCF 0A.3
0835: CALL 70B
0836: BSF 0A.3
.................... printf("%ld\n",fpwm);
0837: MOVLW 10
0838: MOVWF 04
0839: MOVF 38,W
083A: MOVWF 3F
083B: MOVF 37,W
083C: MOVWF 3E
083D: BCF 0A.3
083E: CALL 768
083F: BSF 0A.3
0840: MOVLW 0A
0841: CLRWDT
0842: BTFSS 0C.4
0843: GOTO 041
0844: MOVWF 19
.................... // putc(fpwm>>8);
.................... // putc(fpwm&0x00ff);
.................... }
.................... }
.................... else if(i == '-')
0845: GOTO 082
0846: MOVF 39,W
0847: SUBLW 2D
0848: BTFSS 03.2
0849: GOTO 076
.................... {
....................
.................... if(fpwm>500)
084A: MOVF 38,W
084B: SUBLW 00
084C: BTFSC 03.0
084D: GOTO 075
084E: XORLW FF
084F: BTFSS 03.2
0850: GOTO 055
0851: MOVF 37,W
0852: SUBLW F4
0853: BTFSC 03.0
0854: GOTO 075
.................... {
.................... fpwm-=100;
0855: MOVLW 64
0856: SUBWF 37,F
0857: MOVLW 00
0858: BTFSS 03.0
0859: MOVLW 01
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -