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

📄 mine.src

📁 健身器械面板显示程序
💻 SRC
📖 第 1 页 / 共 2 页
字号:
	RSEG  ?PR?_sEOS_init?MINE
_sEOS_init:
	USING	0
			; SOURCE LINE # 94
	MOV  	TICK?443,R7
; {
			; SOURCE LINE # 95
;  //setup timer2
;    tlong Inc;
;    tword Reload_16;
;    tbyte Reload_08H, Reload_08L;
; 
;    Add_one=0;
			; SOURCE LINE # 101
	MOV  	Add_one+03H,#00H
	MOV  	Add_one+02H,#00H
	MOV  	Add_one+01H,#00H
	MOV  	Add_one,#00H
;    time_G=0;
			; SOURCE LINE # 102
	MOV  	time_G,#00H
;    time_temp_G=0;
			; SOURCE LINE # 103
	MOV  	time_temp_G,#00H
; 
;    // Timer 2 is configured as a 16-bit timer,
;    // which is automatically reloaded when it overflows
;    T2CON   = 0x04;   // Load Timer 2 control register
			; SOURCE LINE # 107
	MOV  	T2CON,#04H
; 
;    // Number of timer increments required (max 65536)
;    Inc = ((tlong)TICK*(OSC_FREQ/1000))/OSC_PER_INST;   
			; SOURCE LINE # 110
	MOV  	R7,TICK?443
	CLR  	A
	MOV  	R4,A
	MOV  	R5,A
	MOV  	R6,A
	MOV  	R3,#0E0H
	MOV  	R2,#02EH
	MOV  	R1,#00H
	MOV  	R0,#00H
	LCALL	?C?LMUL
	MOV  	R3,#0CH
	MOV  	R2,#00H
	MOV  	R1,#00H
	MOV  	R0,#00H
	LCALL	?C?ULDIV
	MOV  	Inc?444+03H,R7
	MOV  	Inc?444+02H,R6
	MOV  	Inc?444+01H,R5
	MOV  	Inc?444,R4
; 
;    // 16-bit reload value
;    Reload_16 = (tword) (65536UL - Inc);
			; SOURCE LINE # 113
	MOV  	R6,Inc?444+02H
	MOV  	R7,Inc?444+03H
	CLR  	C
	CLR  	A
	SUBB 	A,R7
	MOV  	Reload_16?445+01H,A
	CLR  	A
	SUBB 	A,R6
	MOV  	Reload_16?445,A
; 
;    // 8-bit reload values (High & Low)
;    Reload_08H = (tbyte)(Reload_16 / 256);
			; SOURCE LINE # 116
	MOV  	A,Reload_16?445
	MOV  	R7,A
	MOV  	R6,#00H
	MOV  	Reload_08H?446,R7
;    Reload_08L = (tbyte)(Reload_16 % 256);
			; SOURCE LINE # 117
	MOV  	R6,#00H
	MOV  	R7,Reload_16?445+01H
	MOV  	Reload_08L?447,R7
; 
;    // Used for manually checking timing (in simulator)
;    //P2 = Reload_08H;
;    //P3 = Reload_08L;
; 
;    TH2     = Reload_08H;   // Load T2 high byte
			; SOURCE LINE # 123
	MOV  	TH2,Reload_08H?446
;    RCAP2H  = Reload_08H;   // Load T2 reload capt. reg. high byte
			; SOURCE LINE # 124
	MOV  	RCAP2H,Reload_08H?446
;    TL2     = Reload_08L;   // Load T2 low byte
			; SOURCE LINE # 125
	MOV  	TL2,Reload_08L?447
;    RCAP2L  = Reload_08L;   // Load T2 reload capt. reg. low byte
			; SOURCE LINE # 126
	MOV  	RCAP2L,Reload_08L?447
; 
;    // Timer 2 interrupt is enabled, and ISR will be called 
;    // whenever the timer overflows.
;    ET2 = 1;
			; SOURCE LINE # 130
	SETB 	ET2
;     //setup int0
;    IT0 = 1;
			; SOURCE LINE # 132
	SETB 	IT0
;    EX0 = 1;
			; SOURCE LINE # 133
	SETB 	EX0
; 	//setup int1
;    IT1 = 1;
			; SOURCE LINE # 135
	SETB 	IT1
;    EX1 = 1;
			; SOURCE LINE # 136
	SETB 	EX1
;    //setup  time0
;    TMOD= 0x01;
			; SOURCE LINE # 138
	MOV  	TMOD,#01H
;    TH0 = 0xB1;
			; SOURCE LINE # 139
	MOV  	TH0,#0B1H
;    TL0 = 0xE0;
			; SOURCE LINE # 140
	MOV  	TL0,#0E0H
;    // Start Timer 2 running
;    TR2 = 1;     
			; SOURCE LINE # 142
	SETB 	TR2
; 
;    EA  = 1;            // Globally enable interrupts
			; SOURCE LINE # 144
	SETB 	EA
; }
			; SOURCE LINE # 145
	RET  	
; END OF _sEOS_init

; 
; //************************************
; //中断0,计算路程和根据时间计算速度
; 
; void intp0(void) interrupt INT_0

	RSEG  ?PR?intp0?MINE
	USING	0
intp0:
	PUSH 	ACC
	PUSH 	B
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR0
	PUSH 	AR1
	PUSH 	AR2
	PUSH 	AR3
	PUSH 	AR4
	PUSH 	AR5
	PUSH 	AR6
	PUSH 	AR7
	USING	0
			; SOURCE LINE # 150
;  {
;   Add_one++;
			; SOURCE LINE # 152
	MOV  	R7,Add_one+03H
	MOV  	R6,Add_one+02H
	MOV  	R5,Add_one+01H
	MOV  	R4,Add_one
	MOV  	R3,#01H
	MOV  	R2,#00H
	MOV  	R1,#00H
	MOV  	R0,#00H
	MOV  	A,R7
	ADD  	A,R3
	MOV  	Add_one+03H,A
	MOV  	A,R6
	ADDC 	A,R2
	MOV  	Add_one+02H,A
	MOV  	A,R5
	ADDC 	A,R1
	MOV  	Add_one+01H,A
	MOV  	A,R4
	ADDC 	A,R0
	MOV  	Add_one,A
; 
;   if(time_G<time_temp_G)
			; SOURCE LINE # 154
	MOV  	A,time_G
	CLR  	C
	SUBB 	A,time_temp_G
	JNC  	?C0010
;     speed=DIS*10/(time_G+100-time_temp_G);
			; SOURCE LINE # 155
	MOV  	A,time_G
	ADD  	A,#064H
	MOV  	R7,A
	CLR  	C
	MOV  	A,R7
	SUBB 	A,time_temp_G
	MOV  	R7,A
	MOV  	A,#0DCH
	MOV  	B,R7
	DIV  	AB
	MOV  	speed,A
?C0010:
;     speed=DIS*10/(time_G-time_temp_G);
			; SOURCE LINE # 156
	CLR  	C
	MOV  	A,time_G
	SUBB 	A,time_temp_G
	MOV  	R7,A
	MOV  	A,#0DCH
	MOV  	B,R7
	DIV  	AB
	MOV  	speed,A
; 
;    dis=Add_one*DIS;
			; SOURCE LINE # 158
	MOV  	R7,#016H
	MOV  	R6,#00H
	MOV  	R5,#00H
	MOV  	R4,#00H
	MOV  	R3,Add_one+03H
	MOV  	R2,Add_one+02H
	MOV  	R1,Add_one+01H
	MOV  	R0,Add_one
	LCALL	?C?LMUL
	MOV  	dis,R6
	MOV  	dis+01H,R7
;    time_temp_G=time_G;
			; SOURCE LINE # 159
	MOV  	time_temp_G,time_G
;  }
			; SOURCE LINE # 160
	POP  	AR7
	POP  	AR6
	POP  	AR5
	POP  	AR4
	POP  	AR3
	POP  	AR2
	POP  	AR1
	POP  	AR0
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	B
	POP  	ACC
	RETI 	
; END OF intp0

; 
; //************************************
; //系统时钟,计算时间
; 
;  void timer2(void) interrupt TIMER_2

	RSEG  ?PR?timer2?MINE
	USING	0
timer2:
	PUSH 	ACC
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR7
	USING	0
			; SOURCE LINE # 165
;   {
;    if(++time_G==100)
			; SOURCE LINE # 167
	INC  	time_G
	MOV  	R7,time_G
	MOV  	A,R7
	CJNE 	A,#064H,?C0014
;      {
			; SOURCE LINE # 168
; 	   time_G=0;
			; SOURCE LINE # 169
	MOV  	time_G,#00H
; 	   if(++sec==60)
			; SOURCE LINE # 170
	INC  	sec
	MOV  	R7,sec
	MOV  	A,R7
	CJNE 	A,#03CH,?C0014
; 	     {
			; SOURCE LINE # 171
; 		   sec=0;
			; SOURCE LINE # 172
	MOV  	sec,#00H
; 		   ++min;
			; SOURCE LINE # 173
	INC  	min
; 		 }
			; SOURCE LINE # 174
; 	 }
			; SOURCE LINE # 175
;   }
			; SOURCE LINE # 176
?C0014:
	POP  	AR7
	POP  	PSW
	POP  	ACC
	RETI 	
; END OF timer2

; 
; //*************************************
; //中断1,系统暂停
; void intp1(void) interrupt INT_1

	RSEG  ?PR?intp1?MINE
	USING	0
intp1:
	PUSH 	ACC
			; SOURCE LINE # 180
; {
;   flash_t=50;
			; SOURCE LINE # 182
	MOV  	flash_t,#032H
; 
;  if(Sys_flag==WORK)
			; SOURCE LINE # 184
	MOV  	A,Sys_flag
	JNZ  	?C0015
;    {
			; SOURCE LINE # 185
;      Sys_flag=TIMEOUT;
			; SOURCE LINE # 186
	MOV  	Sys_flag,#01H
;      TR2 =0;                      //禁止系统时钟&计数中断
			; SOURCE LINE # 187
	CLR  	TR2
;      EX0 =0;
			; SOURCE LINE # 188
	CLR  	EX0
;      TR0 =1;					  //开放暂停时钟计时
			; SOURCE LINE # 189
	SETB 	TR0
;      ET0 =1;
			; SOURCE LINE # 190
	SETB 	ET0
;    }
			; SOURCE LINE # 191
	SJMP 	?C0017
?C0015:
;  else
;    {
			; SOURCE LINE # 193
;      Sys_flag=WORK; 
			; SOURCE LINE # 194
	MOV  	Sys_flag,#00H
;      TR2 =1;
			; SOURCE LINE # 195
	SETB 	TR2
;      EX0 =1;
			; SOURCE LINE # 196
	SETB 	EX0
;      TR0 =0;
			; SOURCE LINE # 197
	CLR  	TR0
;      ET0 =0;
			; SOURCE LINE # 198
	CLR  	ET0
;      Flash=0;   
			; SOURCE LINE # 199
	CLR  	Flash
;    }
			; SOURCE LINE # 200
; }
			; SOURCE LINE # 201
?C0017:
	POP  	ACC
	RETI 	
; END OF intp1

; 
; 
; //*************************************
; //时钟中断0,计算LED闪烁时间
; 
; void timer0(void) interrupt TIMER_0

	RSEG  ?PR?timer0?MINE
	USING	0
timer0:
	PUSH 	ACC
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR7
	USING	0
			; SOURCE LINE # 207
?C0018:
; {
;    while(--flash_t==0)
			; SOURCE LINE # 209
	DEC  	flash_t
	MOV  	R7,flash_t
	MOV  	A,R7
	JNZ  	?C0020
;       {
			; SOURCE LINE # 210
; 	    #pragma asm
;            CPL Flash
	  CPL Flash
;         #pragma endasm
;       }
			; SOURCE LINE # 214
	SJMP 	?C0018
; 
; }
			; SOURCE LINE # 216
?C0020:
	POP  	AR7
	POP  	PSW
	POP  	ACC
	RETI 	
; END OF timer0

	END

⌨️ 快捷键说明

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