📄 yanshi.src
字号:
MOV R7,A
LCALL _speedchange
; speedchange(50,0);
; SOURCE LINE # 104
CLR A
MOV R5,A
; }
; SOURCE LINE # 105
SJMP ?C0054
?C0014:
; else if((a==0&&bb==0&&c==1)||(a==0&&bb==1&&c==1))
; SOURCE LINE # 106
MOV A,a?
JNZ ?C0020
MOV A,bb
JNZ ?C0020
MOV A,c?
XRL A,#01H
JZ ?C0019
?C0020:
MOV A,a?
JNZ ?C0018
MOV A,bb
CJNE A,#01H,?C0018
MOV A,c?
CJNE A,#01H,?C0018
?C0019:
; {
; SOURCE LINE # 107
; left=0;
; SOURCE LINE # 108
CLR A
MOV left,A
; right=1;
; SOURCE LINE # 109
MOV right,#01H
; speedchange(0,0);
; SOURCE LINE # 110
MOV R5,A
MOV R7,A
LCALL _speedchange
; speedchange(50,1);
; SOURCE LINE # 111
MOV R5,#01H
?C0051:
;
; }
; SOURCE LINE # 113
SJMP ?C0054
?C0018:
; else if((a==0&&bb==1&&c==0))
; SOURCE LINE # 114
MOV A,a?
JNZ ?C0022
MOV A,bb
CJNE A,#01H,?C0022
MOV A,c?
JNZ ?C0022
; {
; SOURCE LINE # 115
; left=0;
; SOURCE LINE # 116
MOV left,A
; right=0;
; SOURCE LINE # 117
MOV right,A
; speedchange(50,0);
; SOURCE LINE # 118
MOV R5,A
MOV R7,#032H
LCALL _speedchange
; speedchange(50,1);
; SOURCE LINE # 119
MOV R5,#01H
?C0052:
; }
; SOURCE LINE # 120
SJMP ?C0054
?C0022:
; else //if (a==0&&bb==0&&c==0)
; {
; SOURCE LINE # 122
; if(left==1)
; SOURCE LINE # 123
MOV A,left
CJNE A,#01H,?C0024
; {
; SOURCE LINE # 124
; speedchange(0,0);
; SOURCE LINE # 125
CLR A
MOV R5,A
MOV R7,A
LCALL _speedchange
; speedchange(50,1); }
; SOURCE LINE # 126
MOV R5,#01H
?C0053:
SJMP ?C0054
?C0024:
; else if(right==1)
; SOURCE LINE # 127
MOV A,right
CJNE A,#01H,?C0026
; {
; SOURCE LINE # 128
; speedchange(50,0);
; SOURCE LINE # 129
LCALL L?0057
; speedchange(0,1);}
; SOURCE LINE # 130
MOV R5,#01H
CLR A
MOV R7,A
SJMP ?C0055
?C0026:
; else
; {
; SOURCE LINE # 132
; speedchange(50,0);
; SOURCE LINE # 133
LCALL L?0057
; speedchange(50,1);}
; SOURCE LINE # 134
MOV R5,#01H
?C0054:
MOV R7,#032H
?C0055:
LCALL _speedchange
; }
; SOURCE LINE # 135
;
;
;
; }
; SOURCE LINE # 139
?C0028:
RET
; END OF judgement
;
; /****精确秒延时****/
;
; void delay_s(uchar n)
RSEG ?PR?_delay_s?YANSHI
_delay_s:
; SOURCE LINE # 143
MOV n?646,R7
; {
; SOURCE LINE # 144
; #pragma asm
; //USING 0
; n_:
n_:
; MOV R2,#200
MOV R2,#200
; R2_:
R2_:
; MOV R1,#100
MOV R1,#100
; R1_:
R1_:
; MOV R0,#10 //系统时钟如果分别是2M,4M,8M,16M
MOV R0,#10
; //则R1值分别为 5,10,20,40
; R0_:
R0_:
; NOP
NOP
; NOP
NOP
; NOP
NOP
; NOP
NOP
;
; NOP
NOP
; NOP
NOP
; NOP
NOP
; NOP
NOP
;
; NOP
NOP
; NOP
NOP
; NOP
NOP
; NOP
NOP
;
; NOP
NOP
; NOP
NOP
; NOP
NOP
; NOP
NOP
;
; NOP
NOP
; NOP
NOP
; //NOP
; //NOP
; DJNZ R0,R0_
DJNZ R0,R0_
; DJNZ R1,R1_
DJNZ R1,R1_
; DJNZ R2,R2_
DJNZ R2,R2_
; DJNZ n?646,n_
DJNZ n?646,n_
; #pragma endasm
; }
; SOURCE LINE # 184
RET
; END OF _delay_s
;
; void main(void)
RSEG ?PR?main?YANSHI
main:
USING 0
; SOURCE LINE # 186
; {
; SOURCE LINE # 187
; uchar chazhi=6;
; SOURCE LINE # 188
MOV chazhi?747,#06H
; uchar chazhi1;
; uchar i;
; Init_Device();
; SOURCE LINE # 191
LCALL Init_Device
; CH452_Init(); /* CH452初始化 */
; SOURCE LINE # 192
LCALL CH452_Init
; LEDG=0;
; SOURCE LINE # 193
CLR LEDG
; IN0=1;
; SOURCE LINE # 194
SETB IN0
; IN1=1;
; SOURCE LINE # 195
SETB IN1
; IN2=1;
; SOURCE LINE # 196
SETB IN2
; IN3=1;
; SOURCE LINE # 197
SETB IN3
; IN4=1;
; SOURCE LINE # 198
SETB IN4
; START=0;
; SOURCE LINE # 199
CLR START
; BACK=0;
; SOURCE LINE # 200
CLR BACK
;
; for(i=5;i>0;i--)
; SOURCE LINE # 202
MOV i?749,#05H
?C0030:
; {
; SOURCE LINE # 203
;
; CH452_Write(CH452_DIG0 | i);delay_s(1);
; SOURCE LINE # 205
MOV R7,i?749
MOV A,#08H
MOV R6,A
LCALL _CH452_Write
MOV R7,#01H
LCALL _delay_s
; }
; SOURCE LINE # 206
DEC i?749
MOV A,i?749
SETB C
SUBB A,#00H
JNC ?C0030
?C0031:
; CH452_Write(CH452_DIG0);
; SOURCE LINE # 207
MOV R7,#00H
MOV R6,#08H
LCALL _CH452_Write
?C0033:
;
; while(1)
; SOURCE LINE # 209
; {
; SOURCE LINE # 210
; LEDG=~LEDG;
; SOURCE LINE # 211
CPL LEDG
; EA=1;
; SOURCE LINE # 212
SETB EA
; avge=pingjun();
; SOURCE LINE # 213
LCALL pingjun
MOV avge+03H,R7
MOV avge+02H,R6
MOV avge+01H,R5
MOV avge,R4
; BCDdisplay_l(avge-200);
; SOURCE LINE # 214
MOV A,avge+03H
ADD A,#038H
MOV R7,A
MOV A,avge+02H
ADDC A,#0FFH
MOV R6,A
MOV A,avge+01H
ADDC A,#0FFH
MOV R5,A
MOV A,avge
ADDC A,#0FFH
MOV R4,A
CLR A
LCALL ?C?FCASTL
LCALL _BCDdisplay_l
; a=IN0;
; SOURCE LINE # 215
MOV C,IN0
CLR A
RLC A
MOV a?,A
; bb=IN1;
; SOURCE LINE # 216
MOV C,IN1
CLR A
RLC A
MOV bb,A
; c=IN2;
; SOURCE LINE # 217
MOV C,IN2
CLR A
RLC A
MOV c?,A
; d=IN3;
; SOURCE LINE # 218
MOV C,IN3
CLR A
RLC A
MOV d,A
; e=IN4;
; SOURCE LINE # 219
MOV C,IN4
CLR A
RLC A
MOV e,A
; if(keykey==1)
; SOURCE LINE # 220
MOV A,keykey
CJNE A,#01H,?C0033
; {
; SOURCE LINE # 221
; chazhi1=abs((int)(avge-avge0));
; SOURCE LINE # 222
CLR C
MOV A,avge+03H
SUBB A,avge0+03H
MOV R7,A
MOV A,avge+02H
SUBB A,avge0+02H
MOV R6,A
LCALL _abs
MOV chazhi1?748,R7
; if(chazhi1>=20)
; SOURCE LINE # 223
MOV A,chazhi1?748
CLR C
SUBB A,#014H
JC ?C0036
; {
; SOURCE LINE # 224
; START=1;
; SOURCE LINE # 225
SETB START
; if(avge>(avge0+chazhi-2))
; SOURCE LINE # 226
MOV A,chazhi?747
ADD A,avge0+03H
MOV R7,A
CLR A
ADDC A,avge0+02H
MOV R6,A
CLR A
ADDC A,avge0+01H
MOV R5,A
CLR A
ADDC A,avge0
MOV R4,A
MOV A,R7
ADD A,#0FEH
MOV R7,A
MOV A,R6
ADDC A,#0FFH
MOV R6,A
MOV A,R5
ADDC A,#0FFH
MOV R5,A
MOV A,R4
ADDC A,#0FFH
MOV R4,A
MOV R3,avge+03H
MOV R2,avge+02H
MOV R1,avge+01H
MOV R0,avge
SETB C
LCALL ?C?ULCMP
JC ?C0037
; {
; SOURCE LINE # 227
; BACK=0;
; SOURCE LINE # 228
CLR BACK
; judgement();
; SOURCE LINE # 229
LCALL judgement
; }
; SOURCE LINE # 230
?C0037:
; if(avge<(avge0-chazhi))
; SOURCE LINE # 231
MOV R7,chazhi?747
XCH A,R3
MOV A,R7
XCH A,R3
CLR C
MOV A,avge0+03H
SUBB A,R3
MOV R7,A
MOV A,avge0+02H
SUBB A,#00H
MOV R6,A
MOV A,avge0+01H
SUBB A,#00H
MOV R5,A
MOV A,avge0
SUBB A,#00H
MOV R4,A
MOV R3,avge+03H
MOV R2,avge+02H
MOV R1,avge+01H
MOV R0,avge
CLR C
LCALL ?C?ULCMP
JC $ + 5H
LJMP ?C0033
; {
; SOURCE LINE # 232
;
; BACK=1;
; SOURCE LINE # 234
; judgement();
; SOURCE LINE # 235
;
; }
; SOURCE LINE # 237
; }
; SOURCE LINE # 238
SJMP ?C0056
?C0036:
; else if((chazhi1<20)&&(chazhi1>10))
; SOURCE LINE # 239
MOV A,chazhi1?748
CLR C
SUBB A,#014H
JNC ?C0040
MOV A,chazhi1?748
SUBB A,#0AH
JC ?C0040
; {
; SOURCE LINE # 240
; if(avge>(avge0+chazhi))
; SOURCE LINE # 241
MOV A,chazhi?747
ADD A,avge0+03H
MOV R7,A
CLR A
ADDC A,avge0+02H
MOV R6,A
CLR A
ADDC A,avge0+01H
MOV R5,A
CLR A
ADDC A,avge0
MOV R4,A
MOV R3,avge+03H
MOV R2,avge+02H
MOV R1,avge+01H
MOV R0,avge
SETB C
LCALL ?C?ULCMP
JC ?C0041
; {
; SOURCE LINE # 242
; START=1;
; SOURCE LINE # 243
SETB START
; BACK=0;
; SOURCE LINE # 244
CLR BACK
; judgement();
; SOURCE LINE # 245
LCALL judgement
; }
; SOURCE LINE # 246
?C0041:
; if(avge<(avge0-chazhi))
; SOURCE LINE # 247
MOV R7,chazhi?747
XCH A,R3
MOV A,R7
XCH A,R3
CLR C
MOV A,avge0+03H
SUBB A,R3
MOV R7,A
MOV A,avge0+02H
SUBB A,#00H
MOV R6,A
MOV A,avge0+01H
SUBB A,#00H
MOV R5,A
MOV A,avge0
SUBB A,#00H
MOV R4,A
MOV R3,avge+03H
MOV R2,avge+02H
MOV R1,avge+01H
MOV R0,avge
CLR C
LCALL ?C?ULCMP
JC $ + 5H
LJMP ?C0033
; {
; SOURCE LINE # 248
; START=1;
; SOURCE LINE # 249
SETB START
; BACK=1;
; SOURCE LINE # 250
?C0056:
SETB BACK
; judgement();
; SOURCE LINE # 251
LCALL judgement
; }
; SOURCE LINE # 252
; }
; SOURCE LINE # 253
LJMP ?C0033
?C0040:
; else
; {
; SOURCE LINE # 255
; START=0;
; SOURCE LINE # 256
CLR START
; for(i=5;i>0;i--)
; SOURCE LINE # 257
MOV i?749,#05H
?C0044:
; {
; SOURCE LINE # 258
; CH452_Write(CH452_DIG0 | i);delay_s(1);
; SOURCE LINE # 259
MOV R7,i?749
MOV A,#08H
MOV R6,A
LCALL _CH452_Write
MOV R7,#01H
LCALL _delay_s
; }
; SOURCE LINE # 260
DEC i?749
MOV A,i?749
SETB C
SUBB A,#00H
JNC ?C0044
?C0045:
; CH452_Write(CH452_DIG0);
; SOURCE LINE # 261
MOV R7,#00H
MOV R6,#08H
LCALL _CH452_Write
; }
; SOURCE LINE # 262
; }
; SOURCE LINE # 263
; //AMX0SL = 0x03;
; //state=(AD_IN(1,1));
; //result=(int)state;
; //BCDdisplay(result);
; //delayms(20);
; }
; SOURCE LINE # 269
LJMP ?C0033
; END OF main
CSEG AT 0004BH
LJMP PCA_ISR
; }
;
;
; /*PCA中断子程序*/
; void PCA_ISR (void) interrupt 9
RSEG ?PR?PCA_ISR?YANSHI
USING 0
PCA_ISR:
; SOURCE LINE # 274
; {
;
; CCF0 = 0; /*清匹配中断标志*/
; SOURCE LINE # 277
CLR CCF0
;
; }
; SOURCE LINE # 279
RETI
; END OF PCA_ISR
CSEG AT 0009BH
LJMP led
;
;
; /*键盘中断子程序*/
; void led(void) interrupt 19
RSEG ?PR?led?YANSHI
USING 0
led:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
MOV A,R0
PUSH ACC
MOV A,R1
PUSH ACC
MOV A,R2
PUSH ACC
MOV A,R3
PUSH ACC
MOV A,R4
PUSH ACC
MOV A,R5
PUSH ACC
MOV A,R6
PUSH ACC
MOV A,R7
PUSH ACC
USING 0
; SOURCE LINE # 283
; {
; uchar key;
; EA=0;
; SOURCE LINE # 286
CLR EA
;
; key=CH452_Read();
; SOURCE LINE # 288
LCALL CH452_Read
;---- Variable 'key?950' assigned to Register 'R7' ----
;
; if(0x62==key)
; SOURCE LINE # 290
CJNE R7,#062H,?C0049
; {
; SOURCE LINE # 291
; delayms(2);
; SOURCE LINE # 292
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; avge0=avge;
; SOURCE LINE # 293
MOV avge0+03H,avge+03H
MOV avge0+02H,avge+02H
MOV avge0+01H,avge+01H
MOV avge0,avge
; keykey=1;
; SOURCE LINE # 294
MOV keykey,#01H
;
; BCDdisplay_h(avge0-200);
; SOURCE LINE # 296
MOV A,avge0+03H
ADD A,#038H
MOV R7,A
MOV A,avge0+02H
ADDC A,#0FFH
MOV R6,A
MOV A,avge0+01H
ADDC A,#0FFH
MOV R5,A
MOV A,avge0
ADDC A,#0FFH
MOV R4,A
CLR A
LCALL ?C?FCASTL
LCALL _BCDdisplay_h
; }
; SOURCE LINE # 297
?C0049:
; EA=1;
; SOURCE LINE # 298
SETB EA
; }
; SOURCE LINE # 299
POP ACC
MOV R7,A
POP ACC
MOV R6,A
POP ACC
MOV R5,A
POP ACC
MOV R4,A
POP ACC
MOV R3,A
POP ACC
MOV R2,A
POP ACC
MOV R1,A
POP ACC
MOV R0,A
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF led
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -