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

📄 4.src

📁 知道过程虚报絮烦那些幸福关系豆腐干活动法
💻 SRC
📖 第 1 页 / 共 3 页
字号:
; .\4.SRC generated from: 4.C
; COMPILER INVOKED BY:
;        C:\Keil\C51\BIN\C51.EXE 4.C BROWSE DEBUG OBJECTEXTEND SRC(.\4.SRC)

$NOMOD51

NAME	_4

P0	DATA	080H
P1	DATA	090H
AA	BIT	090H.1
P2	DATA	0A0H
P3	DATA	0B0H
BB	BIT	090H.2
T0	BIT	0B0H.4
AC	BIT	0D0H.6
T1	BIT	0B0H.5
CC	BIT	090H.3
T2	BIT	090H.0
EA	BIT	0A8H.7
IE	DATA	0A8H
LEDThreeC	BIT	0A0H.2
EXF2	BIT	0C8H.6
RD	BIT	0B0H.7
ES	BIT	0A8H.4
IP	DATA	0B8H
RI	BIT	098H.0
INT0	BIT	0B0H.2
CY	BIT	0D0H.7
TI	BIT	098H.1
INT1	BIT	0B0H.3
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
Key_UP	BIT	0A0H.7
SBUF	DATA	099H
PCON	DATA	087H
SCON	DATA	098H
TMOD	DATA	089H
TCON	DATA	088H
LEDOneC	BIT	0A0H.4
IE0	BIT	088H.1
IE1	BIT	088H.3
B	DATA	0F0H
Key_DOWN	BIT	0A0H.6
CP_RL2	BIT	0C8H.0
ACC	DATA	0E0H
TMPort	BIT	090H.0
ET0	BIT	0A8H.1
key	BIT	0B0H.3
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
TB8	BIT	098H.3
EX1	BIT	0A8H.2
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
LEDTwoC	BIT	0A0H.3
PT1	BIT	0B8H.3
RS0	BIT	0D0H.3
PT2	BIT	0B8H.5
TR0	BIT	088H.4
RS1	BIT	0D0H.4
TR1	BIT	088H.6
TR2	BIT	0C8H.2
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
DPH	DATA	083H
DPL	DATA	082H
RelayOutPort	BIT	090H.7
EXEN2	BIT	0C8H.3
REN	BIT	098H.4
T2CON	DATA	0C8H
RXD	BIT	0B0H.0
TXD	BIT	0B0H.1
F0	BIT	0D0H.5
Key_SET	BIT	0A0H.5
PSW	DATA	0D0H
?PR?main?4           SEGMENT CODE 
?PR?KeyAndDis_Time0?4                    SEGMENT CODE 
?PR?V2ToV?4          SEGMENT CODE 
?PR?InitDS1820?4     SEGMENT CODE 
?PR?ROMDS1820?4      SEGMENT CODE 
?PR?TMVDS1820?4      SEGMENT CODE 
?PR?TMRDS1820?4      SEGMENT CODE 
?PR?TMWDS1820?4      SEGMENT CODE 
?PR?TMREDS1820?4     SEGMENT CODE 
?PR?TMERDS1820?4     SEGMENT CODE 
?PR?WriteDS1820?4    SEGMENT CODE 
?PR?ReadDS1820?4     SEGMENT CODE 
?PR?Delay_510?4      SEGMENT CODE 
?PR?Delay_110?4      SEGMENT CODE 
?PR?Delay_10ms?4     SEGMENT CODE 
?PR?Delay_4s?4       SEGMENT CODE 
?CO?4                SEGMENT CODE 
?DT?4                SEGMENT DATA 
?BA?4                SEGMENT DATA BITADDRESSABLE 
	EXTRN	CODE (?C_STARTUP)
	EXTRN	CODE (?C?SCDIV)
	PUBLIC	KeySETDowning
	PUBLIC	PowTF
	PUBLIC	SetTF
	PUBLIC	KeyTF
	PUBLIC	KeySETDown
	PUBLIC	DS1820ON
	PUBLIC	LEDDis
	PUBLIC	Delay_4s
	PUBLIC	Delay_10ms
	PUBLIC	Delay_110
	PUBLIC	Delay_510
	PUBLIC	ReadDS1820
	PUBLIC	WriteDS1820
	PUBLIC	TMERDS1820
	PUBLIC	TMREDS1820
	PUBLIC	TMWDS1820
	PUBLIC	TMRDS1820
	PUBLIC	TMVDS1820
	PUBLIC	ROMDS1820
	PUBLIC	InitDS1820
	PUBLIC	V2ToV
	PUBLIC	KeyAndDis_Time0
	PUBLIC	main

	DSEG  AT  026H
         TMSetV:   DS   1

	DSEG  AT  027H
         TMRomV:   DS   1

	DSEG  AT  028H
            THV:   DS   1

	DSEG  AT  029H
            TLV:   DS   1

	RSEG  ?DT?4
           KeyV:   DS   1
        IntNum2:   DS   1
        IntNum3:   DS   1
           Sign:   DS   1
         KSDNum:   DS   1
       TempKeyV:   DS   1
      LED_Three:   DS   1
        LED_One:   DS   1
         IntNum:   DS   1
        LED_Two:   DS   1
            TMV:   DS   1

	RSEG  ?BA?4
       StateREG:   DS   1
DS1820ON	EQU	(StateREG+0).0
KeySETDown	EQU	(StateREG+0).2
KeyTF	EQU	(StateREG+0).4
SetTF	EQU	(StateREG+0).1
PowTF	EQU	(StateREG+0).3
KeySETDowning	EQU	(StateREG+0).5

	RSEG  ?CO?4
LEDDis:
	DB	0C0H
	DB	0F9H
	DB	0A4H
	DB	0B0H
	DB	099H
	DB	092H
	DB	082H
	DB	0F8H
	DB	080H
	DB	090H
	DB	0FFH
	DB	0BFH

; /*-------------------------------
; 
; 温度控制器V1.51
; 显示为三个共阳极LED
; 温度传感器用单总线DS18B20
; CPU为2051,三个按键,分别为UP,DOWN,SET
; 温度调节上限为125度,下限为-55度
; 只能用于单只18B20
; 
; 本软件仅供学习与参考,引用时请注明版权
; 
; http://www.cdle.net
; 明浩 2004/9/13
; pnzwzw@cdle.net
; -------------------------------*/
; 
; #include <reg52.H>
; //#include<reg52.h>
; #include <intrins.h>
; #define uchar unsigned char
; #define uint unsigned int
; #define ulong unsigned long
; //#define Key_UP            P3^0    //上调温度
; //#define Key_DOWN          P3^1    //下调温度
; //#define Key_SET           P1^7    //设定键(温度设定,长按开电源)
; //#define RelayOutPort      P3^5    //继电器输出
; #define LEDPort           P0      //LED控制口
; //#define LEDOneC           P3^2    //LED DS1控制(百位)
; //#define LEDTwoC           P3^3    //LED DS2控制(十位)
; //#define LEDThreeC         P3^4    //LED DS3控制(个位)
;  
; //#define TMPort						P1^0		//DS1820 DataPort
; sbit Key_UP =           P2^7;    //上调温度
; sbit Key_DOWN=          P2^6;    //下调温度
; sbit Key_SET=           P2^5;    //设定键(温度设定,长按开电源)
; sbit RelayOutPort=      P1^7;    //继电器输出
; //sbit LEDPort =          P0 ;     //LED控制口
; sbit LEDOneC =          P2^4;    //LED DS1控制(百位)
; sbit LEDTwoC =          P2^3 ;   //LED DS2控制(十位)
; sbit LEDThreeC=         P2^2 ;   //LED DS3控制(个位)
; sbit TMPort	=					P1^0;		//DS1820 DataPort
; sbit AA = P1^1;
; sbit BB = P1^2;
; sbit CC = P1^3;
; sbit key =	P3^3;
;  
; 
; 
; 
; unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF}; //0-9的LED笔划,0xFF为空,0xF7为负号
; 
; static unsigned char bdata StateREG;	//可位寻址的状态寄存器
; sbit DS1820ON = StateREG^0;	          //DS1820是否存在
; sbit SetTF = StateREG^1;              //是否是在温度设置状态
; sbit KeySETDown = StateREG^2;         //是否已按过SET键标识
; sbit PowTF = StateREG^3;              //电源电源标识
; sbit KeyTF = StateREG^4;							//键盘是否允许
; 
; sbit KeySETDowning = StateREG^5;			//SET是否正在按下
; static unsigned char bdata TLV _at_ 0x0029;         //温度变量高低位
; static unsigned char bdata THV _at_ 0x0028;
; static signed char TMV;       //转换后的温度值
; static unsigned char KeyV,TempKeyV;      //键值
; static signed char TMRomV _at_ 0x0027;    //高温限制
; static signed char TMSetV _at_ 0x0026;    //温度设定值
; static unsigned char KSDNum;    //SET键连按时的采集次数
; static unsigned char IntNum,IntNum2,IntNum3;    //中断发生次数,IntNum用于SET长按检测,IntNum2用于设定状态时LED闪烁
; static signed char LED_One,LED_Two,LED_Three;  //LED的显示位 LED_One为十位,LED_Two为个位
; static unsigned char Sign; //负号标识
; 
; void main(void)

	RSEG  ?PR?main?4
main:
	USING	0
			; SOURCE LINE # 71
; {
			; SOURCE LINE # 72
;    
;     void InitDS1820(void);    //定义函数
; 	 
; 	void ROMDS1820(void);
; 	void TMVDS1820(void);
; 	void TMRDS1820(void);
; 	void TMWDS1820(void);
; 	void TMREDS1820(void);
; 	void TMERDS1820(void);
; 	void ReadDS1820(void);
; 	void WriteDS1820(void);
; 	void Delay_510(void);
; 	void Delay_110(void);
; 	void Delay_10ms(void);
; 	void Delay_4s(void);
; 	void V2ToV(void);
; 	 
; 
; 	StateREG = 0;   //初始化变量
			; SOURCE LINE # 91
	CLR  	A
	MOV  	StateREG,A
; 	SetTF = 1;	
			; SOURCE LINE # 92
	SETB 	SetTF
; 	PowTF = 1;			//关电源
			; SOURCE LINE # 93
	SETB 	PowTF
; 	THV = 0;
			; SOURCE LINE # 94
	MOV  	THV,A
; 	TLV = 0;
			; SOURCE LINE # 95
	MOV  	TLV,A
; 	TMV = 0;
			; SOURCE LINE # 96
	MOV  	TMV,A
; 	KeyV = 0;
			; SOURCE LINE # 97
	MOV  	KeyV,A
; 	TempKeyV = 0;
			; SOURCE LINE # 98
	MOV  	TempKeyV,A
; 	KSDNum = 0;
			; SOURCE LINE # 99
	MOV  	KSDNum,A
; 	IntNum = 0;
			; SOURCE LINE # 100
	MOV  	IntNum,A
; 	IntNum2 = 0;
			; SOURCE LINE # 101
	MOV  	IntNum2,A
; 	IntNum3 = 0;
			; SOURCE LINE # 102
	MOV  	IntNum3,A
; 	LED_One = 0;
			; SOURCE LINE # 103
	MOV  	LED_One,A
; 	LED_Two	= 0;
			; SOURCE LINE # 104
	MOV  	LED_Two,A
; 	key = 0;
			; SOURCE LINE # 105
	CLR  	key
; 
; 	InitDS1820(); //初始化
			; SOURCE LINE # 107
	LCALL	InitDS1820
; 	ROMDS1820(); 	//跳过ROM
			; SOURCE LINE # 108
	LCALL	ROMDS1820
; 	TMERDS1820();  //E2PRAM中温度上限值调入RAM
			; SOURCE LINE # 109
	LCALL	TMERDS1820
; 	InitDS1820(); //初始化
			; SOURCE LINE # 110
	LCALL	InitDS1820
; 	ROMDS1820(); 	//跳过ROM
			; SOURCE LINE # 111
	LCALL	ROMDS1820
; 	TMRDS1820(); 	//读出温度指令
			; SOURCE LINE # 112
	LCALL	TMRDS1820
; 	ReadDS1820(); //读出温度值和上限值
			; SOURCE LINE # 113
	LCALL	ReadDS1820
; 	TMSetV = TMRomV;  //拷贝保存在DS18B20ROM里的上限值到TMSetV
			; SOURCE LINE # 114
	MOV  	TMSetV,TMRomV
;      
; 	EA = 1;					//允许CPU中断
			; SOURCE LINE # 116
	SETB 	EA
; 	ET0 = 1; 				//定时器0中断打开
			; SOURCE LINE # 117
	SETB 	ET0
; 	TMOD = 0x1;			//设定时器0为模式1,16位模式
			; SOURCE LINE # 118
	MOV  	TMOD,#01H
; 	TH0=0xB1;
			; SOURCE LINE # 119
	MOV  	TH0,#0B1H
; 	TL0=0xDF;				//设定时值为20000us(20ms)
			; SOURCE LINE # 120
	MOV  	TL0,#0DFH
; 	TR0 = 1;				//开始定时
			; SOURCE LINE # 121
	SETB 	TR0
?C0001:
; 	while(1);
			; SOURCE LINE # 122
	SJMP 	?C0001
; END OF main

CSEG	AT	0000BH
	LJMP	KeyAndDis_Time0

; }
; 
; //定时器0中断外理中键扫描和显示
; void KeyAndDis_Time0(void) interrupt 1 using 2

	RSEG  ?PR?KeyAndDis_Time0?4
	USING	2
KeyAndDis_Time0:
	PUSH 	ACC
	PUSH 	B
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
	USING	2
	MOV  	PSW,#010H
			; SOURCE LINE # 126
; {  
;    
;    TH0=0xB1;
			; SOURCE LINE # 129
	MOV  	TH0,#0B1H
; 	TL0=0xDF;				//设定时值为20000us(20ms)
			; SOURCE LINE # 130
	MOV  	TL0,#0DFH
; 
; 	LEDPort = 0xff;
			; SOURCE LINE # 132
	MOV  	P0,#0FFH
?C0004:
;   while(key);
			; SOURCE LINE # 133
	JB   	key,?C0004
?C0005:
;  
;   if (!Key_UP)
			; SOURCE LINE # 135
	JB   	Key_UP,?C0006
;     //AA=0;
;     KeyV = 1;
			; SOURCE LINE # 137
	MOV  	KeyV,#01H
?C0006:
;   if (!Key_DOWN)
			; SOURCE LINE # 138
	JB   	Key_DOWN,?C0007
;     //AA=0;
;     //BB=0;
; 	 
;     KeyV = 2;
			; SOURCE LINE # 142
	MOV  	KeyV,#02H
?C0007:
;   if (!Key_SET)
			; SOURCE LINE # 143
	JB   	Key_SET,?C0008
;     //AA=0;
; 	//BB=0;
; 	//CC=0;
;     
; 
;     KeyV = 3;
			; SOURCE LINE # 149
	MOV  	KeyV,#03H
?C0008:
; 	//KeySETDowning = 0;  //清除
;   if (KeyV != 0)      //有键按下
			; SOURCE LINE # 151
	MOV  	A,KeyV
	JNZ  	$ + 5H
	LJMP 	?C0009
;     {
			; SOURCE LINE # 152
;       Delay_10ms();   //延时防抖  按下10ms再测
			; SOURCE LINE # 153
	LCALL	Delay_10ms
;       if (!Key_UP)
			; SOURCE LINE # 154
	JB   	Key_UP,?C0010
;         TempKeyV = 1;
			; SOURCE LINE # 155
	MOV  	TempKeyV,#01H
?C0010:
;       if (!Key_DOWN)
			; SOURCE LINE # 156
	JB   	Key_DOWN,?C0011
;         TempKeyV = 2;
			; SOURCE LINE # 157
	MOV  	TempKeyV,#02H
?C0011:
;       if (!Key_SET)
			; SOURCE LINE # 158
	JB   	Key_SET,?C0012
;         TempKeyV = 3;
			; SOURCE LINE # 159
	MOV  	TempKeyV,#03H
?C0012:
;       if (KeyV == TempKeyV)   //两次值相等为确定接下了键
			; SOURCE LINE # 160
	MOV  	A,KeyV
	XRL  	A,TempKeyV
	JNZ  	?C0013
;         {
			; SOURCE LINE # 161
;           if (KeyV == 3)      //按下SET键,如在SET状态就退出,否则进入
			; SOURCE LINE # 162
	MOV  	A,KeyV
	XRL  	A,#03H
	JNZ  	?C0014
;             {
			; SOURCE LINE # 163
; 							//KeySETDowning = 1; //表明SET正在按下
;               PowTF = 0;      //电源标识开
			; SOURCE LINE # 165
	CLR  	PowTF
; 							if (!KeyTF)
			; SOURCE LINE # 166
	JB   	KeyTF,?C0015
;               	if (SetTF)
			; SOURCE LINE # 167
	JNB  	SetTF,?C0016
; 									{
			; SOURCE LINE # 168
;                 		SetTF = 0;    //标识位标识退出设定
			; SOURCE LINE # 169
	CLR  	SetTF
; 										InitDS1820(); //初始化
			; SOURCE LINE # 170
	LCALL	InitDS1820
;   									ROMDS1820(); 	//跳过ROM
			; SOURCE LINE # 171
	LCALL	ROMDS1820
;   									TMWDS1820(); 	//写温度上限指令
			; SOURCE LINE # 172
	LCALL	TMWDS1820
; 										WriteDS1820(); 	//写温度上限到DS18B20ROM
			; SOURCE LINE # 173
	LCALL	WriteDS1820
; 										WriteDS1820(); 	//写温度上限到DS18B20ROM
			; SOURCE LINE # 174
	LCALL	WriteDS1820
; 										WriteDS1820(); 	//写温度上限到DS18B20ROM
			; SOURCE LINE # 175
	LCALL	WriteDS1820
; 										InitDS1820(); //初始化
			; SOURCE LINE # 176
	LCALL	InitDS1820
;   									ROMDS1820(); 	//跳过ROM
			; SOURCE LINE # 177
	LCALL	ROMDS1820
;   									TMREDS1820(); 	//温度上限值COPY回E2PRAM
			; SOURCE LINE # 178
	LCALL	TMREDS1820
; 									}
			; SOURCE LINE # 179
	SJMP 	?C0015
?C0016:
;               	else
;                 	SetTF = 1;
			; SOURCE LINE # 181
	SETB 	SetTF
?C0015:
;               if (!KeySETDown) //没有第一次按下SET时,KeySETDown标识置1
			; SOURCE LINE # 182
	JB   	KeySETDown,?C0018
;                 KeySETDown = 1;
			; SOURCE LINE # 183
	SETB 	KeySETDown
	SJMP 	?C0014
?C0018:
;               else
;                 KSDNum = KSDNum + 1;  //前一秒内有按过SET则开始计数
			; SOURCE LINE # 185
	INC  	KSDNum
;             }
			; SOURCE LINE # 186
?C0014:
;           if (SetTF)  //在SET状态下
			; SOURCE LINE # 187
	JNB  	SetTF,?C0020
;             {
			; SOURCE LINE # 188
;               if ((KeyV == 1) && (!KeyTF))
			; SOURCE LINE # 189
	MOV  	A,KeyV
	CJNE 	A,#01H,?C0021
	JB   	KeyTF,?C0021
;                 TMSetV = TMSetV + 1;    //上调温度
			; SOURCE LINE # 190
	INC  	TMSetV
?C0021:
;               if ((KeyV == 2) && (!KeyTF))
			; SOURCE LINE # 191

⌨️ 快捷键说明

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