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

📄 embed.src

📁 单片机的一个小系统演示
💻 SRC
📖 第 1 页 / 共 2 页
字号:
	RET  	
; 				default:
			; SOURCE LINE # 115
?C0014:
; 					key_down=0;
			; SOURCE LINE # 116
	CLR  	A
	MOV  	key_down,A
; 					break;
			; SOURCE LINE # 117
; 				}
			; SOURCE LINE # 118
; 			}
			; SOURCE LINE # 119
; 	# pragma asm
; 	#pragma endasm
; }
			; SOURCE LINE # 122
?C0015:
	RET  	
; END OF getKey

; 
; void show( uint bitCon,uint num)

	RSEG  ?PR?_show?EMBED
_show:
			; SOURCE LINE # 124
;---- Variable 'num?343' assigned to Register 'R4/R5' ----
;---- Variable 'bitCon?342' assigned to Register 'R6/R7' ----
; {
			; SOURCE LINE # 125
;   uchar seg =SEGPOS[num];
			; SOURCE LINE # 126
	MOV  	A,R5
	MOV  	DPTR,#SEGPOS
	MOVC 	A,@A+DPTR
;---- Variable 'seg?344' assigned to Register 'R5' ----
; 	P0=seg;	
			; SOURCE LINE # 127
	MOV  	P0,A
; 	switch(bitCon)
			; SOURCE LINE # 128
	MOV  	A,R6
	JNZ  	?C0023
	MOV  	A,R7
	DEC  	A
	JZ   	?C0018
	DEC  	A
	JZ   	?C0019
	DEC  	A
	JZ   	?C0020
	DEC  	A
	JZ   	?C0021
	DEC  	A
	JZ   	?C0022
	ADD  	A,#05H
	JNZ  	?C0023
; 	{
			; SOURCE LINE # 129
;     	case 0:
			; SOURCE LINE # 130
?C0017:
; 			P2=CON[0];
			; SOURCE LINE # 131
	MOV  	DPTR,#CON
; 			break;
			; SOURCE LINE # 132
	SJMP 	?C0055
; 		case 1:
			; SOURCE LINE # 133
?C0018:
; 			P2=CON[1];
			; SOURCE LINE # 134
	MOV  	DPTR,#CON+01H
?C0051:
; 			break;
			; SOURCE LINE # 135
	SJMP 	?C0055
; 		case 2:
			; SOURCE LINE # 136
?C0019:
; 			P2=CON[2];
			; SOURCE LINE # 137
	MOV  	DPTR,#CON+02H
?C0052:
; 			break;
			; SOURCE LINE # 138
	SJMP 	?C0055
; 		case 3:
			; SOURCE LINE # 139
?C0020:
; 			P2=CON[3];
			; SOURCE LINE # 140
	MOV  	DPTR,#CON+03H
?C0053:
; 			break;
			; SOURCE LINE # 141
	SJMP 	?C0055
;  		case 4:
			; SOURCE LINE # 142
?C0021:
; 			P2=CON[4];
			; SOURCE LINE # 143
	MOV  	DPTR,#CON+04H
?C0054:
; 			break;
			; SOURCE LINE # 144
	SJMP 	?C0055
; 		case 5:
			; SOURCE LINE # 145
?C0022:
; 			P2=CON[5];
			; SOURCE LINE # 146
	MOV  	DPTR,#CON+05H
?C0055:
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	P2,A
; 			break;
			; SOURCE LINE # 147
; 
; 	}
			; SOURCE LINE # 149
; }
			; SOURCE LINE # 150
?C0023:
	RET  	
; END OF _show

; 
; //*驱动蜂鸣器
; void Buzzer()

	RSEG  ?PR?Buzzer?EMBED
Buzzer:
	USING	0
			; SOURCE LINE # 153
; {
			; SOURCE LINE # 154
; 	P2_6 = 1;//buzzer
			; SOURCE LINE # 155
	SETB 	P2_6
; 	P2_7 = 1;//led
			; SOURCE LINE # 156
	SETB 	P2_7
; 	delay10ms(100);
			; SOURCE LINE # 157
	MOV  	R7,#064H
	MOV  	R6,#00H
	LJMP 	_delay10ms
; END OF Buzzer

; }
; 
; void clearAlarm()

	RSEG  ?PR?clearAlarm?EMBED
clearAlarm:
			; SOURCE LINE # 160
; {
			; SOURCE LINE # 161
; 	P2_6 = 0;//buzzer
			; SOURCE LINE # 162
	CLR  	P2_6
; 	P2_7 = 0;//led
			; SOURCE LINE # 163
	CLR  	P2_7
; }
			; SOURCE LINE # 164
	RET  	
; END OF clearAlarm

; 
; void stateMachine(uchar inkey)

	RSEG  ?PR?_stateMachine?EMBED
_stateMachine:
			; SOURCE LINE # 166
;---- Variable 'inkey?645' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 167
; 		switch(inkey )
			; SOURCE LINE # 168
	MOV  	A,R7
	ADD  	A,#0FEH
	JZ   	?C0028
	DEC  	A
	JZ   	?C0029
	ADD  	A,#02H
	JNZ  	?C0026
; 		{
			; SOURCE LINE # 169
; 			case 1:
			; SOURCE LINE # 170
?C0027:
; 				next_state = 0;
			; SOURCE LINE # 171
	CLR  	A
	MOV  	next_state,A
; 				break;
			; SOURCE LINE # 172
	SJMP 	?C0026
; 			case 2:
			; SOURCE LINE # 173
?C0028:
; 				next_state = 1;
			; SOURCE LINE # 174
	MOV  	next_state,#01H
; 				break;
			; SOURCE LINE # 175
	SJMP 	?C0026
; 			case 3:
			; SOURCE LINE # 176
?C0029:
; 				next_state = 2;
			; SOURCE LINE # 177
	MOV  	next_state,#02H
; 				break;			
			; SOURCE LINE # 178
; 		}
			; SOURCE LINE # 179
?C0026:
; 		cur_state = next_state;
			; SOURCE LINE # 180
	MOV  	cur_state,next_state
; }	
			; SOURCE LINE # 181
	RET  	
; END OF _stateMachine

; 
; void setplay(uint h2bit ,uint m2bit,uint l2bit)

	RSEG  ?PR?_setplay?EMBED
_setplay:
	USING	0
			; SOURCE LINE # 183
	MOV  	h2bit?746,R6
	MOV  	h2bit?746+01H,R7
;---- Variable 'l2bit?748' assigned to Register 'R2/R3' ----
;---- Variable 'm2bit?747' assigned to Register 'DPTR' ----
	MOV  	DPL,R5
	MOV  	DPH,R4
; {
			; SOURCE LINE # 184
; 		array[5]=h2bit/10%10;
			; SOURCE LINE # 185
	MOV  	R4,#00H
	MOV  	R5,#0AH
	LCALL	?C?UIDIV
	MOV  	R4,#00H
	MOV  	R5,#0AH
	LCALL	?C?UIDIV
	MOV  	array+0AH,R4
	MOV  	array+0BH,R5
; 		array[4]=h2bit%10+18;
			; SOURCE LINE # 186
	MOV  	R6,h2bit?746
	MOV  	R7,h2bit?746+01H
	MOV  	R4,#00H
	MOV  	R5,#0AH
	LCALL	?C?UIDIV
	MOV  	A,R5
	ADD  	A,#012H
	MOV  	array+09H,A
	CLR  	A
	ADDC 	A,R4
	MOV  	array+08H,A
; 		array[3]=m2bit/10;
			; SOURCE LINE # 187
	MOV  	R4,#00H
	MOV  	R5,#0AH
	MOV  	R7,DPL
	MOV  	R6,DPH
	LCALL	?C?UIDIV
	MOV  	array+06H,R6
	MOV  	array+07H,R7
; 		array[2]=m2bit%10+18;
			; SOURCE LINE # 188
	MOV  	R6,DPH
	MOV  	R7,DPL
	MOV  	R4,#00H
	MOV  	R5,#0AH
	LCALL	?C?UIDIV
	MOV  	A,R5
	ADD  	A,#012H
	MOV  	array+05H,A
	CLR  	A
	ADDC 	A,R4
	MOV  	array+04H,A
; 		array[1]=l2bit/10;
			; SOURCE LINE # 189
	MOV  	R4,#00H
	MOV  	R5,#0AH
	MOV  	R7,AR3
	MOV  	R6,AR2
	LCALL	?C?UIDIV
	MOV  	array+02H,R6
	MOV  	array+03H,R7
; 		array[0]=l2bit%10+18;
			; SOURCE LINE # 190
	MOV  	R6,AR2
	MOV  	R7,AR3
	MOV  	R4,#00H
	MOV  	R5,#0AH
	LCALL	?C?UIDIV
	MOV  	A,R5
	ADD  	A,#012H
	MOV  	array+01H,A
	CLR  	A
	ADDC 	A,R4
	MOV  	array,A
; }
			; SOURCE LINE # 191
	RET  	
; END OF _setplay

; void main()

	RSEG  ?PR?main?EMBED
main:
	USING	0
			; SOURCE LINE # 192
; {
			; SOURCE LINE # 193
;     uint display=0;
			; SOURCE LINE # 194
	CLR  	A
	MOV  	display?849,A
	MOV  	display?849+01H,A
;     uint LED=0xFF7F;
			; SOURCE LINE # 195
	MOV  	LED?850,#0FFH
	MOV  	LED?850+01H,#07FH
;     initial();
			; SOURCE LINE # 196
	LCALL	initial
?C0032:
; 
;     while(1)
			; SOURCE LINE # 198
;     {
			; SOURCE LINE # 199
; 	     getKey();//获得按键输入
			; SOURCE LINE # 200
	LCALL	getKey
; 	     if(key_down)
			; SOURCE LINE # 201
	MOV  	A,key_down
	JZ   	?C0034
; 	     {
			; SOURCE LINE # 202
; 		     	key_down=0;
			; SOURCE LINE # 203
	CLR  	A
	MOV  	key_down,A
; 		     	P3_0=!P3_0;
			; SOURCE LINE # 204
	CPL  	P3_0
; 	     }
			; SOURCE LINE # 205
?C0034:
; /*
; //*/
; /**设置**
; //*/	     	
; /*            
; 	     switch(cur_state)
; 	     {
; 	      	case time_show:
; 			  			setplay(hour,minute,second);
; 			  			break;
; 			  	case date_show:
; 			  			setplay(year,month,day);
; 			  			break;
; 			  	case second_show:
; 			  			setplay(Cminute,Csecond,Csecond10);
; 			  			break;
; 		  }
; //*/		  
; //动态显示四位数据
;       show(display,array[display]);
			; SOURCE LINE # 225
	MOV  	A,display?849+01H
	ADD  	A,ACC
	ADD  	A,#LOW (array)
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R4,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R5,A
	MOV  	R7,display?849+01H
	MOV  	R6,display?849
	LCALL	_show
;       if(display==5)
			; SOURCE LINE # 226
	MOV  	A,display?849+01H
	XRL  	A,#05H
	ORL  	A,display?849
	JNZ  	?C0035
;       	{
			; SOURCE LINE # 227
;       		display=0;
			; SOURCE LINE # 228
	MOV  	display?849,A
	MOV  	display?849+01H,A
;       		
;       	}
			; SOURCE LINE # 230
	SJMP 	?C0036
?C0035:
; 			else
; 				display +=1;
			; SOURCE LINE # 232
	INC  	display?849+01H
	MOV  	A,display?849+01H
	JNZ  	?C0049
	INC  	display?849
?C0049:
?C0036:
; 			P1=LED;
			; SOURCE LINE # 233
	MOV  	P1,LED?850+01H
; 			LED=LED>>1;
			; SOURCE LINE # 234
	MOV  	A,LED?850
	CLR  	C
	RRC  	A
	MOV  	LED?850,A
	MOV  	A,LED?850+01H
	RRC  	A
	MOV  	LED?850+01H,A
;   	  delay10ms(100);	 //**************
			; SOURCE LINE # 235
	MOV  	R7,#064H
	MOV  	R6,#00H
	LCALL	_delay10ms
; 			if(LED==0x01FE)
			; SOURCE LINE # 236
	MOV  	A,LED?850+01H
	CJNE 	A,#0FEH,?C0032
	MOV  	A,LED?850
	CJNE 	A,#01H,?C0032
; 			{
			; SOURCE LINE # 237
; 				LED=0xFF7F;
			; SOURCE LINE # 238
	MOV  	LED?850,#0FFH
	MOV  	LED?850+01H,#07FH
; 			}
			; SOURCE LINE # 239
; /*      
;       if(key_down == 1)  //运行状态机   
;       	stateMachine(inkey);  		
; //*/
;     }
			; SOURCE LINE # 244
	SJMP 	?C0032
; END OF main

CSEG	AT	0000BH
	LJMP	TIME0

; }
; 
; /*/////////////////////////////////////////////////////////////
; 各中断函数的具体处理
; //*/
; void TIME0() interrupt 1

	RSEG  ?PR?TIME0?EMBED
	USING	0
TIME0:
	PUSH 	ACC
			; SOURCE LINE # 250
; {
; 	if(Num_Of_Circle==0)
			; SOURCE LINE # 252
	MOV  	A,Num_Of_Circle+01H
	ORL  	A,Num_Of_Circle
	JNZ  	?C0039
; 		TR1=1;
			; SOURCE LINE # 253
	SETB 	TR1
?C0039:
; 	Num_Of_Circle = 0;
			; SOURCE LINE # 254
	MOV  	Num_Of_Circle,#00H
	MOV  	Num_Of_Circle+01H,#00H
; }
			; SOURCE LINE # 255
	POP  	ACC
	RETI 	
; END OF TIME0

CSEG	AT	0001BH
	LJMP	TIME1

; 
; void TIME1() interrupt 3//T1  计时 50ms

	RSEG  ?PR?TIME1?EMBED
	USING	0
TIME1:
	PUSH 	ACC
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR6
	PUSH 	AR7
	USING	0
			; SOURCE LINE # 257
; {
; 	Num_Of_Circle = Num_Of_Circle==19 ? 0 : Num_Of_Circle + 1;
			; SOURCE LINE # 259
	MOV  	A,Num_Of_Circle+01H
	XRL  	A,#013H
	ORL  	A,Num_Of_Circle
	JNZ  	?C0041
	MOV  	R6,A
	MOV  	R7,A
	SJMP 	?C0042
?C0041:
	MOV  	A,Num_Of_Circle+01H
	ADD  	A,#01H
	MOV  	R7,A
	CLR  	A
	ADDC 	A,Num_Of_Circle
	MOV  	R6,A
?C0042:
	MOV  	Num_Of_Circle,R6
	MOV  	Num_Of_Circle+01H,R7
; }
			; SOURCE LINE # 260
	POP  	AR7
	POP  	AR6
	POP  	PSW
	POP  	ACC
	RETI 	
; END OF TIME1

CSEG	AT	00003H
	LJMP	EX0INT

; 
; void EX0INT()   interrupt 0

	RSEG  ?PR?EX0INT?EMBED
	USING	0
EX0INT:
			; SOURCE LINE # 262
; {
; }
			; SOURCE LINE # 264
	RETI 	
; END OF EX0INT

CSEG	AT	00013H
	LJMP	EX1INT

; 
; void EX1INT()   interrupt 2

	RSEG  ?PR?EX1INT?EMBED
	USING	0
EX1INT:
			; SOURCE LINE # 266
; {
; }
			; SOURCE LINE # 268
	RETI 	
; END OF EX1INT

CSEG	AT	00023H
	LJMP	SERIAL

; 
; void  SERIAL()  interrupt 4

	RSEG  ?PR?SERIAL?EMBED
	USING	0
SERIAL:
			; SOURCE LINE # 270
; {
; }
			; SOURCE LINE # 272
	RETI 	
; END OF SERIAL

	END

⌨️ 快捷键说明

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