找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1327|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

我這個(gè)單片機(jī)匯編程序?yàn)槭裁床荒茏龅阶笥乙?/span>

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:248656 發(fā)表于 2019-3-25 12:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
status equ 03h               ;定義狀態(tài)寄存器的地址
portd equ 08h                ;定義端口D的寄存器的地址
trisd equ 88h                ;定義端口D的方向控制寄存器的地址
flag equ 20h                 ;定義一個(gè)左右移標(biāo)志寄存器
m equ 21h                    ;定義一個(gè)計(jì)數(shù)器變量
w equ 0                      ;定義傳送目標(biāo)寄存器的W的指示位
f equ 1                      ;定義傳送目標(biāo)寄存器的RAM的指示位
rp0 equ 5                    ;定義一個(gè)狀態(tài)寄存器的體選頁(yè)位指示位
dly1 equ 21h                 ;定義一個(gè)延時(shí)變量
dly2 equ 22h                 ;定義另一個(gè)延時(shí)變量
;---------------------------------主程序------------------------------------
org 000h
nop
bsf status,rp0              ;將狀態(tài)控制寄存器的頁(yè)選位選擇體1
movlw 00h                   ;將立即數(shù)00H送W
movwf trisd                 ;轉(zhuǎn)送到端口D的方向控制寄存器,設(shè)定輸出
bcf status,rp0              ;將狀態(tài)控制寄存器的頁(yè)選位選擇體0
bcf status,0                ;
movlw 0ffh                  ;將立即數(shù)0FEH先送到W
movwf portd                 ;再轉(zhuǎn)送到端口D,顯示
k1                           ;
movlw 01h                   ;將立即數(shù)01H先送到W
xorwf flag,f                ;將左右移標(biāo)志位取反
btfss flag,0                ;測(cè)試左右移標(biāo)志位FLAG=1左移。否則右移
goto loop1                  ;否,右移
goto loop2                  ;是,左移
loop1                        ;右移子程序名
movlw 0ah                   ;將立即數(shù)0AH送W
movwf m                     ;將立即數(shù)0AH轉(zhuǎn)送到M
s1                           ;
decfsz m,f                  ;M減一,結(jié)果送M。如果結(jié)果為0則跳一步,否則順序執(zhí)行。
goto n1                     ;轉(zhuǎn)到右移
goto k1                     ;轉(zhuǎn)到k1
loop2                        ;左移子程序名
movlw 08h                   ;將立即數(shù)08H先送到W
movwf m                     ;再轉(zhuǎn)送到M
s2
decfsz m,f                  ;M減一,結(jié)果送M.如果結(jié)果為0則跳一步,否則順序執(zhí)行
goto l1                     ;轉(zhuǎn)到右移
goto k1                     ;轉(zhuǎn)到K1
n1
rrf portd,f                 ;端口D循環(huán)右移指令
call delay                  ;調(diào)延時(shí)子程序
goto s1                     ;返回到計(jì)數(shù)器S1循環(huán)
l1
rlf portd,f                 ;端口D循環(huán)左移指令
call delay                  ;調(diào)延時(shí)子程序
goto s2                     ;返回到計(jì)數(shù)器S2循環(huán)
;--------------------------------延時(shí)子程序------------------------------------
delay                        ;子程序名
movlw 01h                  ;將外層循環(huán)參數(shù)0FFH經(jīng)過(guò)W
movwf dly1                  ;送入用作外部循環(huán)變量的DLY1
lp0                          ;
movlw 0ffh                  ;將內(nèi)層循環(huán)參數(shù)0FFH經(jīng)過(guò)W
movwf dly2                  ;送入用作內(nèi)層循環(huán)變量的DLY2
lp1                          ;
decfsz dly2,f               ;內(nèi)層變量DLY2內(nèi)容遞減,若為0跳一步
goto lp1                    ;跳到LP1處
decfsz dly1,f               ;外層變量DLY1內(nèi)容遞減,若為0跳一步
goto lp0                    ;跳轉(zhuǎn)的LP0處
return                      ;返回主程序
end                         ;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:248656 發(fā)表于 2019-3-25 17:32 | 只看該作者
找到原因了,謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表