找回密码
 请用中文注册用户!

QQ登录

只需一步,快速开始

查看: 3897|回复: 2

(LED学习板)实验5--LED红绿蓝同时亮灭,同步实现4

[复制链接]
lxqlzj 发表于 2012-2-3 14:37:39 | 显示全部楼层 |阅读模式

注册登录后可以在线提问,行业从业者将帮助您解答!

您需要 登录 才可以下载或查看,没有账号?请用中文注册用户!

×
;============================================================================
;====================翼芯科技 LED红绿蓝同时亮灭,同步=========================
;============================================================================   
;  此源码版权属 翼芯科技 全权享有,如欲引用,敬请署名并告知
;          严禁随意用于商业目的,违者必究,后果自负
;          公司网站 http://www.mcu-led.com
;          公司论坛 http://www.cpu-led.com
;          淘宝店:  http://cpu-led.taobao.com/  和  http://mcu-led.taobao.com/
;          产品咨询 QQ :1322130074 电话:13715619122
;程序说明:本程序用于实现LLED红绿蓝同时亮灭,同步实现,延时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_TEMP     EQU       0BH;
ACZ_BUF      EQU       0CH;



ORG   00H;
        GOTO    MAIN;  
;==============================================================================
;功能描述:过零检测
;隶属模块:无
;参数说明:检测50/60Hz过零,检测两次,两次检测已过零才确定以过零.         
;返回说明:无
;注:.....                                                
;==============================================================================   
AC_TIME:            
        CLRWDT;
        MOVF    GPIO,0;        
        XORWF   ACZ_BUF,0;          //检测过零
        MOVWF   ACZ_TEMP;            
        BTFSS   ACZ_TEMP,4;         //过零标识
        GOTO    AC05;
        BTFSC   FLAG_OK;        
        GOTO    AC00;
        BSF     FLAG_OK;
        GOTO    AC05;
;//===========================================================================
AC00:      
        BSF     FLAG_ACZ;
        BCF     FLAG_OK;        
        MOVF    GPIO,0;            //保存标识
        MOVWF  ACZ_BUF;                                                                                                   
AC05:         
        RETURN;                     //中断反回                                                     
;==============================================================================
;功能描述:延时程序
;隶属模块:无
;参数说明:实现T_DELAY*10MS的延时        
;返回说明:无
;注:.....                                                
;==============================================================================
DELAY1:
        MOVF     T_DELAY,0;
        MOVWF    TEMP1;
D00:   
        MOVLW    .250;
        MOVWF    DLY1;
D10:
        CLRWDT;
        DECFSZ   DLY1,1;
        GOTO     D10;        
        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   B'00000101';          //分给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

kaxev 该用户已被删除
kaxev 发表于 2015-7-11 12:29:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

电子爱好者之家 发表于 2015-9-11 10:47:27 | 显示全部楼层
嗯嗯,不错,谢谢............
回复

使用道具 举报

本版积分规则

QQ|返回首页|有问题扫码关注公众号|LED控制卡 ( 鲁ICP备18053106号 鲁公安网备案号37170202666047 ) keywords:LED显示屏 LED控制卡 LED显示屏配件 麒麟电子

GMT+8, 2024-11-24 12:17

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表