| 
;============================================================================
×
注册登录后可以在线提问,行业从业者将帮助您解答!您需要 登录 才可以下载或查看,没有账号?请用中文注册用户! 
  ;====================翼芯科技 LED红绿蓝同时亮灭,同步=========================
 ;============================================================================
 ;  此源码版权属 翼芯科技 全权享有,如欲引用,敬请署名并告知
 ;          严禁随意用于商业目的,违者必究,后果自负
 ;          公司网站 http://www.mcu-led.com
 ;          公司论坛 http://www.cpu-led.com
 ;          淘宝店:  http://cpu-led.taobao.com/  和  http://mcu-led.taobao.com/
 ;          产品咨询 QQ :1322130074 电话:13715619122
 ;程序说明:本程序用于实现LED红绿蓝1秒同时亮灭,同步实现,延时1ms后再次检测1次,
 ;          抗干扰最好.IC插到U2位置.
 ;文件名称:LED.ASM
 ;日期:    2010/12/23
 ;版本:    1.0
 ;IC配置位: 内部RC   看门狗开     MCLRE为输入
 __CONFIG   _MCLRE_OFF&_CP_ON&_WDT_ON&_IntRC_OSC;
 ;=============================================================================
 ;=============================================================================
 ;=============================================================================
 #INCLUDE        <P12F509.INC>;          引导文件
 ;========================IC输出口定义=========================================
 #define  RED1          GPIO,0;      //红色输出口
 #define  GREEN1        GPIO,1;      //绿色输出口
 #define  BLUE1         GPIO,2;      //蓝色输出口
 #define  PSAA_ZERO     GPIO,4;      //过零检测口
 ;=========================状态标志定义========================================
 #define  FLAG_ACZ      FLAG,0;
 #define  FLAG_OK       FLAG,1;
 #define  ACZ_HL        FLAG,2;      //过零输入高低电平标识
 
 ;=========================变量定义============================================
 FLAG         EQU       07H;         //状态标志寄存器
 T_DELAY      EQU       08H;         //延时用
 TEMP1        EQU       09H;
 DLY1         EQU       0AH;
 ACZ_REG      EQU       0BH
 
 
 
 ORG   00H;
 GOTO    MAIN;
 ;==============================================================================
 ;功能描述:过零检测
 ;隶属模块:无
 ;参数说明:检测50/60Hz过零,检测两次,两次检测已过零才确定以过零.
 ;返回说明:无
 ;注:.....
 ;==============================================================================
 ;=======================过零检测===============================================
 ;==============================================================================
 AC_TIME:
 BCF    STATUS,Z;
 MOVFW  ACZ_REG;
 BTFSC  STATUS,Z;
 GOTO   AC010;
 DECFSZ ACZ_REG,1;
 GOTO   AC050;
 GOTO   AC035;
 AC010:
 BTFSS  ACZ_HL;           //为1高电平状态
 GOTO   AC020;
 BTFSC  PSAA_ZERO;
 GOTO   AC050;
 GOTO   AC030;
 AC020:
 BTFSS  PSAA_ZERO;
 GOTO   AC050;
 AC030:
 MOVLW   .50;
 MOVWF   ACZ_REG;
 GOTO    AC050;
 ;======================延时后再次检测=================================================
 AC035:
 BTFSS  ACZ_HL;          //为1高电平状态
 GOTO   AC040;
 BTFSC  PSAA_ZERO;
 GOTO   AC050;
 BCF    ACZ_HL;
 GOTO   AC045;
 AC040:
 BTFSS  PSAA_ZERO;
 GOTO   AC050;
 BSF    ACZ_HL;
 AC045:
 BSF    FLAG_ACZ;
 AC050:
 CLRWDT;
 
 RETLW 0;;                 反回
 
 ;==============================================================================
 ;功能描述:延时程序
 ;隶属模块:无
 ;参数说明:实现T_DELAY*10MS的延时
 ;返回说明:无
 ;注:.....
 ;==============================================================================
 DELAY1:
 MOVF     T_DELAY,0;
 MOVWF    TEMP1;
 D00:
 CALL     AC_TIME;
 BTFSS    FLAG_ACZ;            //为1,已启动定时器
 GOTO     D00;                 //检测过零
 BCF      FLAG_ACZ;
 DECFSZ   TEMP1,1;
 GOTO     D00;
 RETURN
 ;==============================================================================
 ;功能描述:主函数,程序开始
 ;隶属模块:无
 ;参数说明:无
 ;返回说明:无
 ;注:.....
 ;==============================================================================
 MAIN:
 MOVLW   0X38;             //定义IO口,GPIO 0,1,2为输出,3,4,5为输入.
 TRIS    GPIO;
 CLRF    GPIO;             //GPIO清0
 MOVLW   0X05;                  //分给TMR0, 2~0定义分频为1:64位
 OPTION;
 CLRF    FLAG;
 MOVLW   .100;             //100*20ms=1S
 MOVWF   T_DELAY;
 LOOP:
 ;==============================================================================
 ;功能描述:实现红绿蓝同时跳变
 ;隶属模块:无
 ;参数说明  无
 ;返回说明:无
 ;注:.....
 ;==============================================================================
 FUN1:
 BSF     RED1;           红亮
 BSF     GREEN1;         绿亮
 BSF     BLUE1;          蓝亮
 CALL    DELAY1;
 
 BCF     RED1;           红灭
 BCF     GREEN1;         绿灭
 BCF     BLUE1;          蓝灭
 CALL    DELAY1;
 GOTO    LOOP;
 
 END
 
 
 |