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

📄 led_display.src

📁 AT89S52控制的18B20数字温度传感器
💻 SRC
字号:
; .\LED_Display.SRC generated from: LED_Display.c
; COMPILER INVOKED BY:
;        D:\电子软件\Keil8.02\C51\BIN\C51.EXE LED_Display.c BROWSE DEBUG OBJECTEXTEND SRC(.\LED_Display.SRC)

$NOMOD51

NAME	LED_DISPLAY

P0	DATA	080H
P1	DATA	090H
P2	DATA	0A0H
P3	DATA	0B0H
AC	BIT	0D0H.6
T0	BIT	0B0H.4
T1	BIT	0B0H.5
EA	BIT	0A8H.7
T2	BIT	090H.0
IE	DATA	0A8H
P0_0	BIT	080H.0
P1_0	BIT	090H.0
P0_1	BIT	080H.1
FL	BIT	0D0H.1
P2_0	BIT	0A0H.0
P1_1	BIT	090H.1
P0_2	BIT	080H.2
P3_0	BIT	0B0H.0
P2_1	BIT	0A0H.1
P1_2	BIT	090H.2
P0_3	BIT	080H.3
P3_1	BIT	0B0H.1
P2_2	BIT	0A0H.2
P1_3	BIT	090H.3
P0_4	BIT	080H.4
P3_2	BIT	0B0H.2
P2_3	BIT	0A0H.3
P1_4	BIT	090H.4
P0_5	BIT	080H.5
EXF2	BIT	0C8H.6
RD	BIT	0B0H.7
P3_3	BIT	0B0H.3
P2_4	BIT	0A0H.4
P1_5	BIT	090H.5
P0_6	BIT	080H.6
P3_4	BIT	0B0H.4
P2_5	BIT	0A0H.5
P1_6	BIT	090H.6
P0_7	BIT	080H.7
P3_5	BIT	0B0H.5
ES	BIT	0A8H.4
P2_6	BIT	0A0H.6
P1_7	BIT	090H.7
P3_6	BIT	0B0H.6
P2_7	BIT	0A0H.7
IP	DATA	0B8H
P3_7	BIT	0B0H.7
RI	BIT	098H.0
CY	BIT	0D0H.7
INT0	BIT	0B0H.2
INT1	BIT	0B0H.3
TI	BIT	098H.1
RCAP2H	DATA	0CBH
PS	BIT	0B8H.4
SP	DATA	081H
T2EX	BIT	090H.1
OV	BIT	0D0H.2
RCAP2L	DATA	0CAH
C_T2	BIT	0C8H.1
WR	BIT	0B0H.6
RCLK	BIT	0C8H.5
TCLK	BIT	0C8H.4
SBUF	DATA	099H
PCON	DATA	087H
SCON	DATA	098H
TMOD	DATA	089H
TCON	DATA	088H
IE0	BIT	088H.1
IE1	BIT	088H.3
B	DATA	0F0H
CP_RL2	BIT	0C8H.0
ACC	DATA	0E0H
ET0	BIT	0A8H.1
ET1	BIT	0A8H.3
TF0	BIT	088H.5
ET2	BIT	0A8H.5
TF1	BIT	088H.7
TF2	BIT	0C8H.7
RB8	BIT	098H.2
TH0	DATA	08CH
EX0	BIT	0A8H.0
IT0	BIT	088H.0
TH1	DATA	08DH
EX1	BIT	0A8H.2
TB8	BIT	098H.3
IT1	BIT	088H.2
TH2	DATA	0CDH
P	BIT	0D0H.0
SM0	BIT	098H.7
TL0	DATA	08AH
SM1	BIT	098H.6
TL1	DATA	08BH
SM2	BIT	098H.5
TL2	DATA	0CCH
PT0	BIT	0B8H.1
RS0	BIT	0D0H.3
PT1	BIT	0B8H.3
RS1	BIT	0D0H.4
PT2	BIT	0B8H.5
TR0	BIT	088H.4
TR1	BIT	088H.6
TR2	BIT	0C8H.2
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
DPH	DATA	083H
DPL	DATA	082H
EXEN2	BIT	0C8H.3
REN	BIT	098H.4
T2MOD	DATA	0C9H
T2CON	DATA	0C8H
RXD	BIT	0B0H.0
TXD	BIT	0B0H.1
F0	BIT	0D0H.5
PSW	DATA	0D0H
?PR?TO_DATA?LED_DISPLAY                  SEGMENT CODE 
?DT?TO_DATA?LED_DISPLAY                  SEGMENT DATA OVERLAYABLE 
?BI?TO_DATA?LED_DISPLAY                  SEGMENT BIT OVERLAYABLE 
?PR?LED_Display?LED_DISPLAY              SEGMENT CODE 
?DT?LED_Display?LED_DISPLAY              SEGMENT DATA OVERLAYABLE 
?BI?LED_Display?LED_DISPLAY              SEGMENT BIT OVERLAYABLE 
	EXTRN	CODE (BCD_ASCII)
	EXTRN	CODE (_Delay_1ms)
	EXTRN	CODE (?C?CLDOPTR)
	PUBLIC	?LED_Display?BIT
	PUBLIC	?LED_Display?BYTE
	PUBLIC	LED_Display
	PUBLIC	?TO_DATA?BIT
	PUBLIC	?TO_DATA?BYTE
	PUBLIC	TO_DATA

	RSEG  ?DT?LED_Display?LED_DISPLAY
?LED_Display?BYTE:
  data_size?146:   DS   1
	ORG  1
        S_D?147:   DS   1
	ORG  2
   LED_data?148:   DS   3
	ORG  5
          t?149:   DS   1
	ORG  6
          y?150:   DS   1
	ORG  7
          i?151:   DS   1
	ORG  8
          x?152:   DS   1
	ORG  9
          z?153:   DS   1
	ORG  10
          a?154:   DS   1
	ORG  11
          k?155:   DS   1
	ORG  12
       size?156:   DS   1

	RSEG  ?BI?LED_Display?LED_DISPLAY
?LED_Display?BIT:
        N_S?145:   DBIT   1

	RSEG  ?DT?TO_DATA?LED_DISPLAY
?TO_DATA?BYTE:
          I?041:   DS   1
	ORG  1
   led_data?042:   DS   1
	ORG  2
          x?043:   DS   3
	ORG  5
          y?044:   DS   1

	RSEG  ?BI?TO_DATA?LED_DISPLAY
?TO_DATA?BIT:
        n_s?040:   DBIT   1
; /*==========================================
;                 LED显示驱动程序
; 
; 		文件名:LED_Display.c
; 
; 		作者 YOUJJYY 
; 		时间:2007.4.6 
; ============================================*/
; 
; #include <at89x52.h>
; #include <LED_Display.h>
; #define uchar unsigned char
; 
; //***********显示数据的转换***************//
; uchar TO_DATA(bit n_s,uchar I,uchar led_data)

	RSEG  ?PR?TO_DATA?LED_DISPLAY
TO_DATA:
	USING	0
			; SOURCE LINE # 15
;  {
			; SOURCE LINE # 16
;    uchar x[3],y;
;   if(n_s==1)
			; SOURCE LINE # 18
	JNB  	n_s?040,?C0001
;    {
			; SOURCE LINE # 19
;     switch(I)
			; SOURCE LINE # 20
	MOV  	A,I?041
	DEC  	A
	JZ   	?C0005
	DEC  	A
	JZ   	?C0006
	ADD  	A,#02H
	JNZ  	?C0002
; 	 {  
			; SOURCE LINE # 21
; 	   case 0:if(led_data!=y){P0=P0^0x20;y=led_data;}
			; SOURCE LINE # 22
?C0003:
	MOV  	A,led_data?042
	XRL  	A,y?044
	JZ   	?C0002
	XRL  	P0,#020H
	MOV  	y?044,led_data?042
; 	          break;      
			; SOURCE LINE # 23
	SJMP 	?C0002
; 	   case 1: {x[2]=(led_data>>4)+1;x[3]=(led_data&0x0f)+1;}
			; SOURCE LINE # 24
?C0005:
	MOV  	A,led_data?042
	SWAP 	A
	ANL  	A,#0FH
	INC  	A
	MOV  	x?043+02H,A
	MOV  	A,led_data?042
	ANL  	A,#0FH
	INC  	A
	MOV  	x?043+03H,A
; 	           break;
			; SOURCE LINE # 25
	SJMP 	?C0002
; 	   case 2: {x[0]=(led_data>>4)+1;x[1]=(led_data&0x0f)+1;}
			; SOURCE LINE # 26
?C0006:
	MOV  	A,led_data?042
	SWAP 	A
	ANL  	A,#0FH
	INC  	A
	MOV  	x?043,A
	MOV  	A,led_data?042
	ANL  	A,#0FH
	INC  	A
	MOV  	x?043+01H,A
; 	           break;
			; SOURCE LINE # 27
; 	   default:break;
			; SOURCE LINE # 28
; 	    
; 	   }
			; SOURCE LINE # 30
?C0002:
; 	  return x[I];
			; SOURCE LINE # 31
	MOV  	A,#LOW (x?043)
	ADD  	A,I?041
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R7,A
	RET  	
; 	}
			; SOURCE LINE # 32
?C0001:
; 	else 
; 	  {
			; SOURCE LINE # 34
; 	   if(led_data<46)led_data=0;
			; SOURCE LINE # 35
	MOV  	A,led_data?042
	CLR  	C
	SUBB 	A,#02EH
	JNC  	?C0010
	CLR  	A
	MOV  	led_data?042,A
	SJMP 	?C0011
?C0010:
; 	   else led_data-=47;
			; SOURCE LINE # 36
	MOV  	A,#0D1H
	ADD  	A,led_data?042
	MOV  	led_data?042,A
?C0011:
; 	   return led_data;
			; SOURCE LINE # 37
	MOV  	R7,led_data?042
; 	   }
			; SOURCE LINE # 38
;    }
			; SOURCE LINE # 39
?C0008:
	RET  	
; END OF TO_DATA

;   
; /*****************LED显示程序***************/
; void LED_Display(bit N_S,uchar data_size,uchar S_D,uchar *LED_data)//N_S是数字和字符串显示选择,

	RSEG  ?PR?LED_Display?LED_DISPLAY
LED_Display:
	USING	0
			; SOURCE LINE # 42
;                                                                    //data_size显示多少位
; 																  //S_D是显示方式(0x00:静态,0x01:半动态,0x02:全动态)
; 																 //LED_data是要显示的数据
; {
			; SOURCE LINE # 46
;  uchar t,y,i,x,z,a,k=20,size=0;
			; SOURCE LINE # 47
	MOV  	k?155,#014H
	CLR  	A
	MOV  	size?156,A
; 
; //*****************显示方式S_D***************//
; 	 switch(S_D)
			; SOURCE LINE # 50
	MOV  	A,S_D?147
	DEC  	A
	JZ   	?C0014
	DEC  	A
	JZ   	?C0015
	ADD  	A,#02H
	JNZ  	?C0012
; 	  {
			; SOURCE LINE # 51
; 	   case 0:a=0;
			; SOURCE LINE # 52
?C0013:
	CLR  	A
	MOV  	a?154,A
; 	         break;
			; SOURCE LINE # 53
	SJMP 	?C0012
; 	   case 1:a=4,k=80,size/=4;
			; SOURCE LINE # 54
?C0014:
	MOV  	a?154,#04H
	MOV  	k?155,#050H
	MOV  	A,size?156
	RRC  	A
	RRC  	A
	ANL  	A,#03FH
	MOV  	size?156,A
; 	         break;
			; SOURCE LINE # 55
	SJMP 	?C0012
; 	   case 2:a=1;//size-=4;
			; SOURCE LINE # 56
?C0015:
	MOV  	a?154,#01H
; 	        break;
			; SOURCE LINE # 57
; 	   default:break;
			; SOURCE LINE # 58
; 		}
			; SOURCE LINE # 59
?C0012:
; 
; //*************显示个数data_size***********//
;    for(i=0;i<data_size;i++)					                  //BCD码转换成LED码
			; SOURCE LINE # 62
	CLR  	A
	MOV  	i?151,A
?C0017:
	MOV  	A,i?151
	CLR  	C
	SUBB 	A,data_size?146
	JNC  	?C0018
;     {
			; SOURCE LINE # 63
; 	 if(N_S==1)size=0; 
			; SOURCE LINE # 64
	JNB  	N_S?145,?C0020
	CLR  	A
	MOV  	size?156,A
	SJMP 	?C0019
?C0020:
;       else size+=1;
			; SOURCE LINE # 65
	INC  	size?156
;     }		  
			; SOURCE LINE # 66
?C0019:
	INC  	i?151
	SJMP 	?C0017
?C0018:
; 
; //****************显示程序**************//                            		 
;    for(t=0;t<=size;t++)	  //要显示的位数
			; SOURCE LINE # 69
	CLR  	A
	MOV  	t?149,A
?C0022:
	MOV  	A,t?149
	SETB 	C
	SUBB 	A,size?156
	JNC  	?C0031
;      {
			; SOURCE LINE # 70
; 	  for(y=0;y<=k;y++)		  //循环20显示
			; SOURCE LINE # 71
	CLR  	A
	MOV  	y?150,A
?C0025:
	MOV  	A,y?150
	SETB 	C
	SUBB 	A,k?155
	JNC  	?C0024
; 	    {
			; SOURCE LINE # 72
; 		  z=0x7f;		  
			; SOURCE LINE # 73
	MOV  	z?153,#07FH
; 	      for(i=0;i<=3;i++)       //一次显示
			; SOURCE LINE # 74
	CLR  	A
	MOV  	i?151,A
?C0028:
; 	       {
			; SOURCE LINE # 75
; 		     P2=z;
			; SOURCE LINE # 76
	MOV  	P2,z?153
; 			 z>>=1;
			; SOURCE LINE # 77
	MOV  	A,z?153
	CLR  	C
	RRC  	A
	MOV  	z?153,A
; 			 z+=0x80;
			; SOURCE LINE # 78
	ADD  	A,#080H
	MOV  	z?153,A
; 			 x=TO_DATA(N_S,i,LED_data[i+t*a]);
			; SOURCE LINE # 79
	MOV  	C,N_S?145
	MOV  	?TO_DATA?BIT,C
	MOV  	?TO_DATA?BYTE,i?151
	MOV  	A,t?149
	MOV  	B,a?154
	MUL  	AB
	ADD  	A,i?151
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,B
	MOV  	DPH,A
	MOV  	R3,LED_data?148
	MOV  	R2,LED_data?148+01H
	MOV  	R1,LED_data?148+02H
	LCALL	?C?CLDOPTR
	MOV  	?TO_DATA?BYTE+01H,A
	LCALL	TO_DATA
	MOV  	x?152,R7
; 			  P0=BCD_ASCII[x];
			; SOURCE LINE # 80
	MOV  	A,R7
	MOV  	DPTR,#BCD_ASCII
	MOVC 	A,@A+DPTR
	MOV  	P0,A
; 			  Delay_1ms(3);//延时时间
			; SOURCE LINE # 81
	MOV  	R7,#03H
	LCALL	_Delay_1ms
; 			 }	      
			; SOURCE LINE # 82
	INC  	i?151
	MOV  	A,i?151
	SETB 	C
	SUBB 	A,#03H
	JC   	?C0028
; 			}
			; SOURCE LINE # 83
?C0027:
	INC  	y?150
	SJMP 	?C0025
; 	 }
			; SOURCE LINE # 84
?C0024:
	INC  	t?149
	SJMP 	?C0022
; }			; SOURCE LINE # 85
?C0031:
	RET  	
; END OF LED_Display

	END

⌨️ 快捷键说明

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