新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于SPCE061A單片機匯編語實現(xiàn)的流水燈

        基于SPCE061A單片機匯編語實現(xiàn)的流水燈

        作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
        //====================================================================//

        //名稱:流水燈
        //功能描述:發(fā)光二極管單向循環(huán)點亮。SPCE061A單片機匯編語言實現(xiàn)

        //===================================================================//

        本文引用地址:http://www.104case.com/article/201611/320260.htm

        .include SPCE061A.inc //包含頭文件
        .ram
        .var R_LEDControl //定義LED控制變量
        .var R_DaleyControl //定義延時程序控制變量
        .code
        .public _main

        //===================================================================//
        //函數(shù)名:主函數(shù)
        //功能描述:控制發(fā)光二極管單向循環(huán)點亮
        //===================================================================//

        _main:
        r1=0x00ff //定義IOA口為同向輸出,并輸出低電平
        [P_IOA_Dir]=r1
        [P_IOA_Attrib]=r1
        r1=0x0000
        [P_IOA_Data]=r1 //IO口電平初始化,如果是接共陽極的LED,則選用高電平輸出
        r1=0x0001
        [R_LEDControl]=r1
        L_MAINloop: //通過循環(huán)左移實現(xiàn)LED單向循環(huán)點亮程序段
        r1=[R_LEDControl]
        [P_IOA_Data]=r1 //點亮第一個LED
        r1=r1 LSL 1 //循環(huán)左移語句
        CMP r1,0x0100 //控制點亮的LED在IOA低八位之內(nèi)。CMP指令進行做差比較
        JNE NoOver //該指令的意思為:不等于轉(zhuǎn)接到后邊的程序段
        r1=0x0001 //如果等于的話,則對IOA口的輸出初始化
        NoOver:
        [R_LEDControl]=r1
        r1=0x0000 //給延時函數(shù)的計數(shù)賦初值
        [R_DaleyControl]=r1
        CALL L_Daleyloop //轉(zhuǎn)到延時子函數(shù)
        JMP L_MAINloop //循環(huán)控制LED的點亮

        //===================================================================//
        //函數(shù)名:延時函數(shù)
        //功能描述:通過計數(shù)實現(xiàn)延時,不精確延時
        //===================================================================//

        L_Daleyloop:
        r1=0x0001
        [P_Watchdog_Clear]=r1 //清看門狗
        r1=[R_DaleyControl]
        r1+=1 //延時計數(shù)加1
        [R_DaleyControl]=r1
        JNZ L_Daleyloop //JNZ指令標示“非0則轉(zhuǎn)到loop”。該語句的意思是“R_DaleyControl的值不為0則轉(zhuǎn)到L_Daleyloop”。
        RETF //一般情況下,循環(huán)加法的值到65535時為最大值,超過該值時則會從0算起,及65536標示0




        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 六安市| 兰州市| 安福县| 高雄县| 福鼎市| 永福县| 乌鲁木齐县| 新乡县| 玉门市| 宝山区| 东莞市| 怀仁县| 沁源县| 莲花县| 广德县| 秭归县| 龙泉市| 松溪县| 北宁市| 河曲县| 云霄县| 灵石县| 宜川县| 宁德市| 拜泉县| 滦南县| 珠海市| 麻阳| 武冈市| 图木舒克市| 伊宁市| 钦州市| 东乌| 茂名市| 富宁县| 屏边| 庆城县| 山西省| 长春市| 台州市| 奉新县|