編寫子程式div_16,實現雙位元組無符號數除法。自行定義變數,其中:
採用移位法,設被除數為acca、除數為accblo、商為accchi(初值為0)、餘數為accclo(初值為0)。acca由高位至低位依次左移進入accclo單元,每次移位進入後比較accclo單元和accblo的值,如果accclo≥accblo,則將這一位的商單元的值置1,然後從accclo中減去accblo,否則不做操作。直到acca全部進入accclo單元為止。此時accchi中存放商、accclo中存放餘數。
程式框圖:
list p=16f877a ;標明所用的處理器型別
#include ;呼叫標頭檔案
__config _cp_off & _wdt_off & _boden_off & _pwrte_off & _hs_osc & _wrt_off & _lvp_off & _cpd_off
;*****
*****
*****
**變數定義**
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
***accalo equ 0x20 ; 存放被除數低 8 位
accahi equ 0x21 ; 存放被除數高 8 位
accblo equ 0x22 ; 存放除數 8 位
accclo equ 0x23 ; 存放餘數 8 位
accchi equ 0x24 ; 存放商 8 位
count equ 0x25 ; 存放迴圈變數
;*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
****
org 0x0000 ; 復位入口位址
nop ; 相容icd除錯工具,必須加nop
goto main ; 跳轉至main函式
;*****
*****
*****
*****
*****main 函式的*******
*****
*****
*****
*****
*****
main
movlw 0x2a ; 送被除數高8位
movwf accahi
movlw 0x3b ; 送被除數低8位
movwf accalo
movlw 0x4c ; 送除數
movwf accblo
movlw .16 ; 初始化迴圈變數
movwf count
clrf accclo ; 清零結果單元
clrf accchi
call div_16 ; 呼叫子程式求解,結果應為商0x8e,餘0x13
nopgoto $ ; 停機
;*****
*****
*****
*****
*****
*壓縮bcd碼轉二進位制子程式 *
*****
*****
*****
****
org 0x0100
div_16
rlf accalo
rlf accahi
rlf accclo ; 被除數由高位至低位依次左移進入餘數單元
movf accblo,w
bsf status,c ; c位置1
subwf accclo,w ; 比較餘數單元與除數單元
btfsc status,c ; 若accclo>=accblo
call sub_c_b ; 則該位商單元置1,餘數單元減去除數,否則該位商單元置0
rlf accchi
decfsz count,f
goto div_16
return
sub_c_b
movf accblo,w ; 餘數單元減去除數
subwf accclo,f
return
;*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*******
end ; 程式結束
PIC微控制器引腳
微控制器的訊號引腳是微控制器外特性的體現,在硬體上使用者只能使用引腳,通過引腳的連線組建微控制器系統。pic 8位微控制器系列和mcs 51系列微控制器一樣,其引腳除電源 vdd vss為單一功能外,其餘的訊號引腳常是多個功能,即引腳的復用功能。常見的引腳符號和主要功能如下 1 clr vpp 清除...
PIC系列微控制器
pic系列微控制器 由美國microchip公司推出的pic微控制器系列產品,首先採用了risc結構的嵌入式微控制器,其高速度 低電壓 低功耗 大電流lcd驅動能力和低價位otp技術等都體現出微控制器產業的新趨勢。現在pic系列微控制器在世界微控制器市場的份額排名中已逐年公升位,尤其在8位微控制器市...
PIC微控制器之中斷
1 微控制器在任何情況下的復位,均會導致總遮蔽位和其他的中斷遮蔽位清0,即在預設狀態下,禁止cpu響應所有的中斷。2.中斷標誌位的狀態與該所有的終端遮蔽位無關,即不管是否允許cpu響應中斷源的中斷請求,只要滿足了中斷條件,中斷標誌位就會被置1 3.當系統開放某一中斷源時候,中斷源就通過過中斷標誌位向...