完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
MAIN_1
;********数据变换处理(BIN;maxFFFF -> BCD;max065535) ;代入参数 源数据 : L_byte,H_byte ; 目标数据: MYDT_A,B,C ;BCD设定值初始化 MOVFF BIN_D00,L_byte ;设定值_0(温度,BIN;2字节) MOVFF BIN_D01,H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D00 ;设定值_0(BCD;2字节) MOVLW 0X0F ;高位屏蔽 ANDWF BCD_D00,F MOVLW 0XE0 ;小数点 IORWF BCD_D00,F MOVFF MYDT_B,BCD_D01 SWAPF BCD_D01,F MOVLW 0XF0 ;低位屏蔽 ANDWF BCD_D01,F SWAPF MYDT_C,F MOVLW 0X0F ;高位屏蔽 ANDWF MYDT_C,W IORWF BCD_D01,F MOVFF BIN_D10,L_byte ;设定值_1(照度,BIN;2字节) MOVFF BIN_D11,H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D10 ;设定值_1(BCD;2字节) MOVFF MYDT_B,BCD_D11 ;记录频率 MOVFF BIN_D20,L_byte ;设定值_2(温度,BIN;2字节) MOVFF BIN_D21,H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D20 ;设定值_2(BCD;2字节) MOVFF MYDT_B,BCD_D21 MOVFF BIN_D30,L_byte ;设定值_3(照度,BIN;2字节) MOVFF BIN_D31,H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D30 ;设定值_3(BCD;2字节) MOVFF MYDT_B,BCD_D31 MOVFF BIN_D40,L_byte ;设定值_4(PH,BIN;2字节) MOVFF BIN_D41,H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D40 ;设定值_4(BCD;2字节) MOVFF MYDT_B,BCD_D41 MOVFF BIN_D50,L_byte ;设定值_5(浊度,BIN;2字节) MOVFF BIN_D51,H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D50 ;设定值_5(BCD;2字节) MOVFF MYDT_B,BCD_D51 ;吹泡频率 MOVFF BIN_D60,L_byte ;设定值_60(分,BIN;1字节) CLRF H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D60 ;设定值_60(BCD;1字节) MOVFF BIN_D61,L_byte ;设定值_61(时,BIN;1字节) CLRF H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D61 ;设定值_61(BCD;1字节) MOVFF BIN_D62,L_byte ;设定值_62(秒,BIN;1字节) CLRF H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D62 ;设定值_62(BCD;1字节) MOVFF BIN_D63,L_byte ;设定值_63(分,BIN;1字节) CLRF H_byte CALL B2_BCD MOVFF MYDT_C,BCD_D63 ;设定值_63(BCD;1字节) ;延时约1秒(10*255*255) MOVLW 0X10 MOVWF MYCNT2 MAIN_LP1 CLRF MYCNT1 MAIN_LP2 CLRF DELAY_CNT CALL DELAY_NUS DECFSZ MYCNT1,F GOTO MAIN_LP2 DECFSZ MYCNT2,F GOTO MAIN_LP1 CLRF KEYFLG ;键标志清零 CLRF KEYMOD CLRF RUNMOD CLRF DSPFLG CLRF BIN_D73 ;40微秒单位 CLRF S电子发烧友T ;1秒计数器(10毫秒单位) CLRF DSPSEG ;当前显示数据段 CLRF DSPBIT ;当前显示数据位 CLRF RFDAT0 CLRF RFDAT1 MOVLW .2 MOVWF SMPCNT CALL INIT_DISPLAY CALL CLEAR_SCREEN CALL FIRST_SCREEN CLRF DSPSEG ;段:0 CLRF DSPBIT ;位:0: CALL CURSOR_SET ;画面光标位置计算set MOVLW B'11000000' MOVWF INTCON ;GIEH=1,GIEL=1,TMR0IE=1,INTE=0;RBIE=0,TMR0IF=0,INTF=0,RBIF=0 MOVLW B'00000100' MOVWF T2CON ;无分频;tiMER2 ON BSF ADCON0,ADON BSF ADCON0,GO/DONE ;AD START BSF RUNMOD,0 ;TEST***********1/启动按钮有效 LOOP ; GOTO LOOP_4 NOP CALL KEY_PRO ;内部键查询处理 CALL RF_PRO ;无线键查询处理 ; GOTO LOOP ;***************test BTFSC KEYFLG,7 ;IF=1;有键数据待处理 CALL KEY_DT_SET ;内部键或RF遥控器接受数据处理 NOP MOVF DSPCNT,F BNZ LOOP_0 CALL DSP_PRO ;数据显示处理(每100ms更新一组数据) NOP MOVLW .5 MOVWF DSPCNT LOOP_0 NOP MOVF SMPCNT,F BNZ LOOP_1 BTFSC ADCON0,GO/DONE ;0 AD DONE GOTO LOOP_1 NOP CALL AD_SAMPLE MOVLW .2 MOVWF SMPCNT BSF ADCON0,GO/DONE ;AD RESTART LOOP_1 BTFSS RUNMOD,0 ;b0:0/停止;1/启动按钮有效 GOTO LOOP BTFSC RUNMOD,7 ;b7:1/首次低电平等待 GOTO LOOP_2 BTFSC PORTE,7 ;低电平测试 GOTO LOOP BSF RUNMOD,7 ;b7:1/首次低电平有效 GOTO LOOP LOOP_2 BTFSC RUNMOD,6 ;b6:1/首次高电平等待 GOTO LOOP_3 BTFSS PORTE,7 ;高电平测试 GOTO LOOP BSF RUNMOD,6 ;b6:1/已同步 GOTO LOOP LOOP_3 NOP MOVF PI_CNT,F ;计算间歇计数器(20ms单位) GOTO LOOP_4 BTFSC PI_CH,0 ;当前PI计算通道 GOTO LOOP_30 ;通道1计算(温度控制) MOVFF UNIT_1,UNIT_0 ;前次符号位 MOVFF E_NOW1,E_NOW ;前次误差值 MOVFF D_DTY1,D_DTY0 ;前次控制值 MOVFF BIN_D00,DC_VT0 MOVFF BIN_D01,MYDT_B BCF STATUS,C RRNCF MYDT_B,F ;带进位循环右移 RRNCF DC_VT0,F ;带进位循环右移 RRNCF MYDT_B,F ;带进位循环右移 RRNCF DC_VT0,F ;带进位循环右移 MOVFF BIN_D80,SMP_VT0 MOVFF BIN_D81,MYDT_B BCF STATUS,C RRNCF MYDT_B,F ;带进位循环右移 RRNCF SMP_VT0,F ;带进位循环右移 RRNCF MYDT_B,F ;带进位循环右移 RRNCF SMP_VT0,F ;带进位循环右移 ;** 输入参数:DC_VT0,SMP_VT0,UNIT_0,E_NOW ;** 返回参数:D_DTY0,E_NOW占空比高8位 CALL SIGN_PI_CAL ;单字节数字PI参数计算 MOVFF E_NOW,E_NOW1 ;当前误差值 MOVFF UNIT_0,UNIT_1 ;当前符号位 MOVFF D_DTY0,D_DTY1 ;当前控制值 BSF PI_CH,0 ;当前PI计算通道 GOTO LOOP_3E LOOP_30 ;通道2计算(照度控制) MOVFF UNIT_2,UNIT_0 ;前次符号位 MOVFF E_NOW2,E_NOW ;前次误差值 MOVFF D_DTY2,D_DTY0 ;前次控制值 MOVFF BIN_D10,DC_VT0 MOVFF BIN_D11,MYDT_B BCF STATUS,C RRNCF MYDT_B,F ;带进位循环右移 RRNCF DC_VT0,F ;带进位循环右移 RRNCF MYDT_B,F ;带进位循环右移 RRNCF DC_VT0,F ;带进位循环右移 MOVFF BIN_D90,SMP_VT0 MOVFF BIN_D91,MYDT_B BCF STATUS,C RRNCF MYDT_B,F ;带进位循环右移 RRNCF SMP_VT0,F ;带进位循环右移 RRNCF MYDT_B,F ;带进位循环右移 RRNCF SMP_VT0,F ;带进位循环右移 CALL SIGN_PI_CAL ;单字节数字PI参数计算 MOVFF D_DTY0,D_DTY2 ;当前控制值 MOVFF E_NOW,E_NOW2 ;当前误差值 MOVFF UNIT_0,UNIT_2 ;当前符号位 BCF PI_CH,0 ;当前PI计算通道 LOOP_3E MOVLW .5 MOVWF PI_CNT ;计算间歇计数器(20ms单位) LOOP_4 ;温度控制处理 NOP MOVF STEP_C1,F ;初始角计数器(10ms/250单位) BNZ LOOP_5 ;温度控制脉冲输出(100us) BSF PORTB,4 MOVLW .40 MOVWF MYCNT1 LOOP_4LP MOVLW .200 MOVWF DELAY_CNT CALL DELAY_NUS DECFSZ MYCNT1,F GOTO LOOP_4LP BCF PORTB,4 ; MOVLW .100 ; MOVWF STEP_C1 ;初始角计数器(10ms/250单位) ; BTFSC RUNMOD,2 ;温度控制半波已触发? ; GOTO LOOP_41 ; BSF RUNMOD,2 ;温度控制半波已触发 ; GOTO LOOP_5 LOOP_41 ;温度控制处理 BCF RUNMOD,1 ;下次同步等待允许 LOOP_5 ;照度控制处理 MOVLW .0 CPFSEQ STEP_C2 ;初始角计数器(10ms/250单位) GOTO LOOP ;照度控制脉冲输出(100us) BSF PORTB,5 MOVLW .200 MOVWF DELAY_CNT CALL DELAY_NUS BCF PORTB,5 INCF STEP_C2,F ;初始角计数器(10ms/250单位) BSF RUNMOD,3 ;照度控制已触发 GOTO LOOP END |
|
相关推荐
1个回答
|
|
不错的文件,值得收藏
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
489 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
498 浏览 0 评论
655 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1329 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
558 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11753 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 22:29 , Processed in 0.440182 second(s), Total 72, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号