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

📄 mcs-51单片机实用子程序库2.txt

📁 MCS-51单片机实用子程序库
💻 TXT
字号:
DBUF0 EQU 30H
	TEMP EQU 40H
	RDATA EQU 60H
	POINT EQU 38H
	ADQS   EQU  39H	
	RDAT  EQU 7EH
	SUM  EQU  7FH	
	DAT BIT 90H
	CLKE BIT 91H
	TXBZ BIT 30H
	BELL BIT 0A2H
	ORG 0000H
        LJMP MAIN
	ORG 000BH
        LJMP INTT0
	ORG 0023H
	LJMP PCCOM

        ORG 0100H
MAIN: 	MOV RDAT,#0       
	MOV ADQS,#0         
	MOV POINT,#0
        SETB BELL          ;报警处理
	MOV IE,#80H       ;CPU开中断
        MOV TMOD,#21H     ;定时器T0方式1计时,定时器T1方式2计时
	MOV TH0,#0FFH     ;产生20KHZ的时钟频率,供给AD0809
        MOV TL0,#0E7H
        SETB TR0
	SETB EA
        SETB ET0
	MOV TH1,#0FDH
	MOV TL1,#0FDH
      
        MOV PCON,#00H
	MOV SCON,#50H
	SETB TR1
	SETB PS
	SETB ES
	CLR  RI	
	CLR  TI
	SETB P3.2
        CLR P2.7        ;ST
	CLR P2.6        ;OE
START: 	LCALL AD0809
   	LCALL TURNBCD      ;调用数据处理程序 
 	LCALL BAOJING 
	LCALL PCSER          ;调用通信子程序
	LCALL DISP1	   ;调用显示子程序		
	LCALL DELAY	  
        LJMP  START  
/********************AD采样子程序********************/
AD0809:	;SETB ET0
        CLR A
	CLR P3.2
	SETB P2.7
        NOP
	NOP
	CLR P2.7
	NOP
	NOP
	NOP
	NOP
;WAIT:	JB P3.2,MOVD
;	AJMP WAIT
;MOVD:	
	SETB P2.6
	MOV A,P0
	MOV ADQS,A
	;MOV @R0,A
	CLR P2.6
  	;CLR ET0	
/******************** 数据处理?*********************/
TURNBCD:
;	MOV A,@R0      
	MOV A,ADQS
 	MOV B,#51
	DIV AB
	NOP
	NOP
	NOP
	MOV 35H,A       ;个位数放入32H中
	MOV A,B         ;余数大于19H,F0为1,乘法溢出,结果加5
	CLR F0
	SUBB A,#1AH
	MOV F0,C
	MOV A,#10
	MUL AB
	MOV B,#51
	DIV AB
	NOP
	NOP
	NOP
	JB F0,LOOP2      ;F0=1,转至LOOP2执行
	ADD A,#5
LOOP2:	MOV 36H,A        ;小数点后第一位放至36H中
	MOV A,B		
	CLR F0
	SUBB A,#1AH
	MOV F0,C
	MOV A,#10
	MUL AB
	MOV B,#51
	DIV AB
	NOP
	NOP
	NOP
	JB F0,LOOP3			
	ADD A,#5
LOOP3:	MOV 37H,A	  ;小数点后第二位放至37H中
	LCALL DELAY
	MOV 30H,#0
	MOV 31H,#0
	MOV 32H,35H
	MOV 33H,36H
	MOV 34H,37H
	RET
/*********************报警子程序*******************/

BAOJING:
	CLR F0  
	MOV A,35H
	CLR 35H
	SUBB A,#05H
	MOV F0,C
	JNB F0,NEXTB1    ;超量程报警,数码管显示88888
	LJMP NEXTB2
NEXTB1:	CLR BELL
	MOV 30H,#08H
	MOV 31H,#08H
	MOV 32H,#08H
	MOV 33H,#08H
	MOV 34H,#08H
	LCALL DISP1
	LCALL DELAY
	LCALL DELAY
NEXTB2: SETB BELL
	RET
/******************定时器0中断子程序****************/
INTT0:  CLR EA
        PUSH PSW
	PUSH ACC
	PUSH DPL
	PUSH DPH
        MOV TH0,#0FFH   ;产生20KHZ的时钟频率,供给AD0809
        MOV TL0,#0E7H
	CPL P2.3 
        POP DPH
	POP DPL
	POP ACC
	POP PSW
	SETB EA
	RETI	
/********************显示子程序*********************/    
DISP1:	              
	CLR A                 ;清R0,R1中内容
	MOV @R0,A
	MOV @R1,A
	MOV R0,#DBUF0         ;静态显示子程序
	MOV R1,#TEMP
	MOV R2,#5
	MOV POINT,#03H	      ;第三个数码管点小数点
DP10:	DJNZ POINT,NPOINT
	MOV DPTR, #SEGTAB2    ;表头地址
	SJMP CONTIUE
NPOINT:	MOV DPTR,#SEGTAB1
CONTIUE:MOV A ,@R0
	MOVC A,@A+DPTR       ;取段码
	MOV @R1,A            ;到TEMP中
	INC R0
	INC R1
	DJNZ R2,DP10
	MOV R0,#TEMP         ;段码地址指针
	MOV R1,#5            ;段码字节数
DP12:	MOV R2,#8            ;移位次数
	MOV A,@R0            ;取段码
DP13:	RLC A                ;段码左移
	MOV DAT,C            ;输出一位段码
	CLR CLKE             ;发送一个位移脉冲
	SETB CLKE           
	DJNZ R2,DP13
	INC R0
	DJNZ R1,DP12
	RET
SEGTAB1:DB 3FH,06H,5BH,4FH,66H,6DH      ;0,1,2,3,4,5
	DB 7DH,07H,7FH,6FH,77H,7CH	;6,7,8,9,A,B	
	DB 58H,5EH,7BH,71H,00H,40H	;C,D,E,F, ,-
	
SEGTAB2:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH	;0.,1.,2.,3.,4.,5.
	DB 0FDH,87H,0FFH,0EFH,0F7H,0FCH	;6.,7.,8.,9.,A.,B.
	DB 0D8H,0DEH,0FBH,0F1H,00H,0D0H	;C.,D.,E.,F., .,-.
DELAY: 	MOV R4,#08H          ;延时                  
AA1:	MOV R5,#0FFH
AA:	NOP
	NOP
	NOP
	DJNZ R5,AA
	DJNZ R4,AA1
	RET
/*******************串行口中断子程序*******************/ 

PCCOM:    
	PUSH PSW
	PUSH ACC
	PUSH DPL
	PUSH DPH
	CLR ES																																
	JNB TI,L1           ;等待发送完成
	CLR TI             ;清发送标志
L1: 	CLR RI
	MOV A,SBUF         ;发送数据缓存
	CJNE A,#01H,L2
	;SETB TXBZ
	MOV 60H,A
	MOV A,RDAT
	ADD A,#1
	MOV RDAT,A
	LJMP EXITR
L2:	CJNE A,#52H,L3
;	SETB TXBZ
	MOV 61H,A
	MOV A,RDAT
	ADD A,#1
	MOV  RDAT,A
	LJMP EXITR
L3:	CJNE A,#00H,L4
	;SETB TXBZ
	MOV 62H,A
	MOV A,RDAT
	ADD A,#1
	MOV  RDAT,A
	LJMP EXITR
L4:	CJNE A,#02H,L5
	;SETB TXBZ
	MOV 63H,A
	MOV A,RDAT
	ADD A,#1
	MOV  RDAT,A
	LJMP EXITR
L5: 	CJNE A,#55H,EXITR
	SETB TXBZ
	MOV 64H,A
	MOV A,RDAT
	ADD A,#1
	MOV  RDAT,A  
EXITR:	POP PSW
	POP ACC
	POP DPL
	POP DPH
	SETB TR0
	SETB ES
	RETI
/***********************通信子程序*****************/
PCSER:  	
        CLR  ES
        MOV  A ,RDAT
	CJNE A,#05H,L7   
	;JNB TXBZ,L7  
	MOV A,60H
	ADD A,61H
	ADD A,62H
	ADD A,63H
	MOV SUM,A
	CJNE A,64H,L7
	MOV A,SUM
        MOV SBUF,#01H
	ACALL DELAY
	MOV SBUF,61H
	ACALL DELAY
	MOV SBUF,62H
	ACALL DELAY
	MOV SBUF,63H
	ACALL DELAY
	MOV SBUF,35H
	ACALL DELAY
	MOV SBUF,36H
	ACALL DELAY
	MOV SBUF,37H
	ACALL DELAY
	ADD A ,34H
	ADD A ,35H
	ADD A ,36H
	MOV SBUF,A
	ACALL DELAY
	CLR A	
	CLR P1.2
L7:	CLR TXBZ
	MOV RDAT,#0
	SETB ES
	RET
 /*******************通讯结束**********************/
	END

⌨️ 快捷键说明

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