精品麻豆一区二区三区乱码-人妻在线免费观看一区二区-欧美日韩在线观看精品99-美女极度色诱视频国产免费

麒麟電子

標題: (PIC-匯編)實驗6--LED紅綠藍同時亮滅,同步實現(xiàn)5 [打印本頁]

作者: lxqlzj    時間: 2012-2-3 14:39
標題: (PIC-匯編)實驗6--LED紅綠藍同時亮滅,同步實現(xiàn)5
;============================================================================
;====================翼芯科技 LED紅綠藍同時亮滅,同步=========================
;============================================================================   
;  此源碼版權(quán)屬 翼芯科技 全權(quán)享有,如欲引用,敬請署名并告知
;          嚴禁隨意用于商業(yè)目的,違者必究,后果自負
;          公司網(wǎng)站 http://www.mcu-led.com
;          公司論壇 http://www.cpu-led.com
;          淘寶店:  http://cpu-led.taobao.com/  和  http://mcu-led.taobao.com/
;          產(chǎn)品咨詢 QQ :1322130074 電話:13715619122
;程序說明:本程序用于實現(xiàn)LED紅綠藍1秒同時亮滅,同步實現(xiàn),延時1ms后再次檢測1次,
;          抗干擾最好.IC插到U2位置.
;文件名稱:LED.ASM  
;日期:    2010/12/23   
;版本:    1.0   
;IC配置位: 內(nèi)部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;      //過零檢測口   

;=========================狀態(tài)標志定義========================================                                      
#define  FLAG_ACZ      FLAG,0;                 
#define  FLAG_OK       FLAG,1;
#define  ACZ_HL        FLAG,2;      //過零輸入高低電平標識
  
;=========================變量定義============================================
FLAG         EQU       07H;         //狀態(tài)標志寄存器
T_DELAY      EQU       08H;         //延時用            
TEMP1        EQU       09H;
DLY1         EQU       0AH;




ORG   00H;
        GOTO    MAIN;  
;==============================================================================
;功能描述:過零檢測
;隸屬模塊:無
;參數(shù)說明:檢測50/60Hz過零,檢測兩次,兩次檢測已過零才確定以過零.         
;返回說明:無
;注:.....                                                
;==============================================================================   
AC_TIME:  
        BTFSS  ACZ_HL;        為1高電平狀態(tài)
        GOTO   AC00;            
        BTFSC  PSAA_ZERO;      狀態(tài)為1時判定過零腳電平               
        GOTO   AC20;           無過零,退出      
        GOTO   AC05;           有過零  
AC00:
        BTFSS  PSAA_ZERO;      狀態(tài)為0時判定過零腳電平            
        GOTO   AC20;           無過零,退出
AC05:
        BTFSC  FLAG_OK;        有過零,判定是否是第一次過零
        GOTO   AC10;           跳到第二次過零
        BSF    FLAG_OK;        第一次過零
        GOTO   AC20;
;//===========================================================================
AC10:      
        BSF    FLAG_ACZ;       成功過零標識
        BCF    FLAG_OK;        清標識次數(shù)標識
        BTFSS  PSAA_ZERO;      重置過零狀態(tài)標識        
        GOTO   AC15;           
        BSF    ACZ_HL;         高電平標識
        GOTO   AC20;
AC15:
        BCF    ACZ_HL;         低電平標識                                                                 
AC20:         
        RETURN;                中斷反回                                                      
;==============================================================================
;功能描述:延時程序
;隸屬模塊:無
;參數(shù)說明:實現(xiàn)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
;==============================================================================
;功能描述:主函數(shù),程序開始
;隸屬模塊:無
;參數(shù)說明:無     
;返回說明:無
;注:.....                                                
;==============================================================================
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:
;==============================================================================
;功能描述:實現(xiàn)紅綠藍同時跳變
;隸屬模塊:無
;參數(shù)說明  無      
;返回說明:無
;注:.....                                                
;==============================================================================      
FUN1:
        BSF     RED1;           紅亮
        BSF     GREEN1;         綠亮
        BSF     BLUE1;          藍亮
        CALL    DELAY1;

        BCF     RED1;           紅滅
        BCF     GREEN1;         綠滅
        BCF     BLUE1;          藍滅   
        CALL    DELAY1;
        GOTO    LOOP;

        END






歡迎光臨 麒麟電子 (http://www.isorzjg.com/) Powered by Discuz! X3.5