📄 main.src
字号:
; MOV A,@R0
MOV A,@R0
; MOV temp_l_h,A
MOV temp_l_h,A
; INC R0
INC R0
; MOV A,@R0
MOV A,@R0
; MOV temp_l_l,A
MOV temp_l_l,A
;
; #pragma endasm
; }
; SOURCE LINE # 145
?C0004:
RET
; END OF mach_t
;
;
; void mach_rh(void)
RSEG ?PR?mach_rh?MAIN
mach_rh:
USING 0
; SOURCE LINE # 148
; /******************************************************************************
; 功能 : 计算湿度转换成对应的脉宽
; 入口 : wb_rh
; 出口 :
; ******************************************************************************/
; {
; SOURCE LINE # 154
; //temp_m=out_rh*32/25*9+2880; //电阻是200
; //temp_m=out_rh*27/25*8+2160; //电阻是200
; temp_m=(out_rh+50)*27/5*4/5+1080; //电阻是100 +30相当于实际湿度加3
; SOURCE LINE # 157
MOV A,out_rh+01H
ADD A,#032H
MOV R7,A
MOV A,out_rh
ADDC A,#00H
MOV R6,A
MOV R4,#00H
MOV R5,#01BH
ACALL ?C?IMUL
MOV R4,#00H
MOV R5,#05H
ACALL ?C?SIDIV
MOV A,R7
MOV R0,#02H
?C0011:
CLR C
RLC A
XCH A,R6
RLC A
XCH A,R6
DJNZ R0,?C0011
MOV R7,A
MOV R4,#00H
MOV R5,#05H
ACALL ?C?SIDIV
MOV A,R7
ADD A,#038H
MOV R7,A
MOV A,R6
ADDC A,#04H
MOV R6,A
MOV A,R6
RLC A
SUBB A,ACC
MOV R5,A
MOV R4,A
MOV temp_m+03H,R7
MOV temp_m+02H,R6
MOV temp_m+01H,R5
MOV temp_m,R4
; rh_pwm_H=65536-temp_m;
; SOURCE LINE # 158
MOV R6,temp_m+02H
MOV R7,temp_m+03H
CLR C
CLR A
SUBB A,R7
MOV rh_pwm_H+01H,A
CLR A
SUBB A,R6
MOV rh_pwm_H,A
; //rh_pwm_L=65535-(18000-temp_m);
; rh_pwm_L=65535-(13500-temp_m);
; SOURCE LINE # 160
MOV R6,temp_m+02H
MOV R7,temp_m+03H
CLR C
CLR A
SUBB A,R7
MOV R7,A
CLR A
SUBB A,R6
MOV R6,A
CLR C
MOV A,#043H
SUBB A,R7
MOV rh_pwm_L+01H,A
MOV A,#0CBH
SUBB A,R6
MOV rh_pwm_L,A
;
; #pragma asm
; MOV R0,#rh_pwm_H;
MOV R0,#rh_pwm_H;
; MOV A,@R0
MOV A,@R0
; MOV rh_h_h,A
MOV rh_h_h,A
; INC R0
INC R0
; MOV A,@R0
MOV A,@R0
; MOV rh_h_l,A
MOV rh_h_l,A
; MOV R0,#rh_pwm_L
MOV R0,#rh_pwm_L
; MOV A,@R0
MOV A,@R0
; MOV rh_l_h,A
MOV rh_l_h,A
; INC R0
INC R0
; MOV A,@R0
MOV A,@R0
; MOV rh_l_l,A
MOV rh_l_l,A
; #pragma endasm
;
; }
; SOURCE LINE # 177
?C0005:
RET
; END OF mach_rh
;
; void pwm_Init(void)
RSEG ?PR?pwm_Init?MAIN
pwm_Init:
; SOURCE LINE # 179
; /******************************************************************************
; Function : void Initpwm()
; Parameters : (void)
; Description: Initializes Sound Studio
; ******************************************************************************/
; {
; SOURCE LINE # 185
; ES = 0; //关串行通讯中断
; SOURCE LINE # 186
CLR ES
; TMOD=0X11; //则T1,与T0 都设为16位定时器
; SOURCE LINE # 187
MOV TMOD,#011H
; IE=0x8a; //开t1,t0中断
; SOURCE LINE # 188
MOV IE,#08AH
; TCON=0x55; //开定时器
; SOURCE LINE # 189
MOV TCON,#055H
; P3M1=0x30; //设P3.4,P3.5推挽输出
; SOURCE LINE # 190
MOV P3M1,#030H
;
; #pragma asm
; CLR P3.4
CLR P3.4
; CLR P3.5
CLR P3.5
; #pragma endasm
;
; TH0 = 0xFB;
; SOURCE LINE # 197
MOV TH0,#0FBH
; TL0 = 0xC8;
; SOURCE LINE # 198
MOV TL0,#0C8H
; TH1 = 0xFB;
; SOURCE LINE # 199
MOV TH1,#0FBH
; TL1 = 0xC8;
; SOURCE LINE # 200
MOV TL1,#0C8H
; temp_h_h = 0xFB;
; SOURCE LINE # 201
MOV temp_h_h,#0FBH
; temp_h_l = 0xC8;
; SOURCE LINE # 202
MOV temp_h_l,#0C8H
; temp_l_h = 0xCF;
; SOURCE LINE # 203
MOV temp_l_h,#0CFH
; temp_l_l = 0x7C;
; SOURCE LINE # 204
MOV temp_l_l,#07CH
; rh_h_h = 0xFB;
; SOURCE LINE # 205
MOV rh_h_h,#0FBH
; rh_h_l = 0xC8;
; SOURCE LINE # 206
MOV rh_h_l,#0C8H
; rh_l_h = 0xCF;
; SOURCE LINE # 207
MOV rh_l_h,#0CFH
; rh_l_l = 0x7C;
; SOURCE LINE # 208
MOV rh_l_l,#07CH
;
; /* TMOD=0x21;// SET T1 8 BYTE TIMR MODE 如果 TMOD=0X11 //则T1,与T0 都设为16位定时器
; TCON=0x5 ;// SET T0 16 BYTE TIMR MODE
; SCON=0x50;// SET SCON 1 ren on IE=0x8a //开t1,t0中断
; PCON=0x80;// SMOD=0 XTAL= 18.432 TCON=0x55 //开定时器
; TH1=0xF6;// SET T1 9600 bit band
; TL1=0xF6;// new value fah old fdh
; TR1=1;// on T1
; EA =1 ; // on intrrupt
; ES =1 ;
; ET0 =1 ;
; TR0 =1 ; */
; }
; SOURCE LINE # 221
?C0006:
RET
; END OF pwm_Init
CSEG AT 0000BH
AJMP pwm_out
; /**********************************************************************************
; 定时器 0
; 温度pwm脉宽输出中断服务程序
; 温度的脉宽值高电平在;temp_h_h+temp_h_l中
; 温度的脉宽值低电平在;temp_l_h+temp_l_l中
; 转换频率100赫兹
; ***********************************************************************************/
; void pwm_out(void) interrupt 1 using 0
RSEG ?PR?pwm_out?MAIN
USING 0
pwm_out:
; SOURCE LINE # 229
; {
; #pragma asm
; PWM:
PWM:
; Jb p3.4,pwm1_L
Jb p3.4,pwm1_L
; CPL P3.4
CPL P3.4
; CLR TR0
CLR TR0
; MOV TH0,temp_h_h
MOV TH0,temp_h_h
; MOV TL0,temp_h_l
MOV TL0,temp_h_l
; SETB TR0
SETB TR0
; RETI
RETI
; pwm1_L: CPL p3.4
pwm1_L: CPL p3.4
; CLR TR0
CLR TR0
; MOV TH0,temp_l_h
MOV TH0,temp_l_h
; MOV TL0,temp_l_l
MOV TL0,temp_l_l
; SETB TR0
SETB TR0
; RETI
RETI
; #pragma endasm
; }
; SOURCE LINE # 247
?C0007:
RETI
; END OF pwm_out
CSEG AT 0001BH
AJMP pwm_rh_out
; /**********************************************************************************
; 定时器1
; 湿度pwm脉宽输出中断服务程序
; 湿度的脉宽值高电平在;rh_h_h+rh_h_l中
; 湿度的脉宽值低电平在;rh_l_h+rh_l_l中
; 转换频率100赫兹
; ***********************************************************************************/
; void pwm_rh_out(void) interrupt 3 using 0
RSEG ?PR?pwm_rh_out?MAIN
USING 0
pwm_rh_out:
; SOURCE LINE # 255
; {
; #pragma asm
; PWM_rh:
PWM_rh:
; Jb p3.5,pwm2_L
Jb p3.5,pwm2_L
; CPL P3.5
CPL P3.5
; CLR TR1
CLR TR1
; MOV TH1,rh_h_h
MOV TH1,rh_h_h
; MOV TL1,rh_h_l
MOV TL1,rh_h_l
; SETB TR1
SETB TR1
; RETI
RETI
; pwm2_L: CPL p3.5
pwm2_L: CPL p3.5
; CLR TR1
CLR TR1
; MOV TH1,rh_l_h
MOV TH1,rh_l_h
; MOV TL1,rh_l_l
MOV TL1,rh_l_l
; SETB TR1
SETB TR1
; RETI
RETI
; #pragma endasm
; }
; SOURCE LINE # 273
?C0008:
RETI
; END OF pwm_rh_out
;
; void PCA_Initiate(void)
RSEG ?PR?PCA_Initiate?MAIN
PCA_Initiate:
; SOURCE LINE # 275
; /******************************************************************************
; PCA定时器模块初始化程序
; *******************************************************************************/
; {
; SOURCE LINE # 279
; //TMOD=0X11 //则T1,与T0 都设为16位定时器
; //IE=0x8a //开t1,t0中断
; //TCON=0x55 //开定时器
; #pragma asm
; MOV CMOD,#10000000B //;PCA空闲模式下记数器停止工作
MOV CMOD,#10000000B
; //;PCA fosc/12
; //;禁止PCA记数溢出中断
; MOV CCON,#0 //;CF=0 清记数中断标志
MOV CCON,#0
; //CR=0 停记数器
; //;清 PCA 各模块中断标志 CCF1=0 CCF0=0
; MOV CL,#0
MOV CL,#0
; MOV CH,#0 //;清PCA记数器
MOV CH,#0
; MOV CCAP0L,#0
MOV CCAP0L,#0
; MOV CCAP0H,#3CH
MOV CCAP0H,#3CH
; MOV CCAPM0,#49H //;设置pca 模块0为16位定时器 ECCF0=1,允许pca模块0中断
MOV CCAPM0,#49H
; //;当[CCAP0H,CCAP0L]=[CH,CL]中断发生
; SETB EPCA_LVD //;开中断
SETB EPCA_LVD
; SETB CR //;开PCA 记数(CH,CL)
SETB CR
;
; #pragma endasm
; }
; SOURCE LINE # 300
?C0009:
RET
; END OF PCA_Initiate
CSEG AT 00033H
AJMP pca_temr
;
; /*****************************************************************************
; PCA定时器模块中断服务程序
; 设定10ms中断一次,中断100次1秒钟
; Counter存中断记数值
; 18.432/12=15360=3C00h
; Channe_10mS_H=3CH
; Channe_10mS_L=0
; ******************************************************************************/
; void pca_temr(void) interrupt 6 using 0
RSEG ?PR?pca_temr?MAIN
USING 0
pca_temr:
; SOURCE LINE # 310
; {
; #pragma asm
;
; PUSH ACC
PUSH ACC
; PUSH PSW
PUSH PSW
; //;18.432/12=15360=3C00h
; // ;Channe_10mS_H=3CH
; MOV A,#24H //MOV A,#3CH //;Channe_10mS_L=0
MOV A,#24H
; ADD A,CCAP0H
ADD A,CCAP0H
; MOV CCAP0H,A
MOV CCAP0H,A
; CLR CCF0
CLR CCF0
; INC Counter
INC Counter
; MOV A,Counter
MOV A,Counter
; CLR C
CLR C
; SUBB A,#100
SUBB A,#100
; JC PCA_Interrupt_Exit
JC PCA_Interrupt_Exit
; MOV Counter,#0
MOV Counter,#0
; SETB time_1s_flag
SETB time_1s_flag
; SETB read_sht_flag
SETB read_sht_flag
; CLR P1.2
CLR P1.2
; PCA_Interrupt_Exit:
PCA_Interrupt_Exit:
; POP PSW
POP PSW
; POP ACC
POP ACC
; RETI
RETI
; #pragma endasm
; }
; SOURCE LINE # 336
?C0010:
RETI
; END OF pca_temr
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -