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

📄 demo.lst

📁 自己设计的pic单片机开发板源程序和说明书(内有原理图)支持pic16系列28脚和40脚器件。串口输出信息。4个LED数码管驱动;4个LED驱动;4个按键驱动;1个RS232接口;1个RS485接口;
💻 LST
📖 第 1 页 / 共 5 页
字号:
.................... //----------------------------------  
.................... 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 + -