新聞中心

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

        基于SPCE061A單片機(jī)匯編語(yǔ)實(shí)現(xiàn)的流水燈

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

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

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

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

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

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

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

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

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




        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 盘锦市| 闻喜县| 日照市| 吴桥县| 郎溪县| 灵川县| 盱眙县| 顺昌县| 霸州市| 华阴市| 四平市| 北流市| 青龙| 吕梁市| 衡南县| 江津市| 隆化县| 丹东市| 华安县| 正阳县| 安仁县| 龙口市| 博爱县| 黎川县| 宁津县| 沛县| 饶河县| 和硕县| 香港 | 嘉祥县| 余姚市| 开封县| 彰武县| 伊宁县| 廉江市| 都昌县| 新河县| 德江县| 东光县| 漳浦县| 开阳县|