麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

PIC單片機實現雙字節無符號數的乘法

2019-11-06 07:45:36
字體:
來源:轉載
供稿:網友

一、編寫子程序Mpy_16,實現雙字節無符號數乘法。自行定義變量,其中:

ACCALO ;存放乘數低 8 位ACCAHI ;存放乘數高 8 位ACCBLO ;存放被乘數低 8 位和乘積第 16~23 位ACCBHI ;存放被乘數高 8 位和乘積第 24~31 位ACCCLO ;存放乘積第 0~7 位ACCCHI ;存放乘積第 8~15 位

編寫Main主程序,使用乘數 0x4015和被乘數0x3321對編寫的子程序進行測試,結果應為0x0CCC71B5。

程序框圖:PIC雙字節無符號數乘法程序框圖

list p=16f877A ;標明所用的處理器類型#include <p16f877A.inc> ;調用頭文件 __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 位和乘積第 16~23 位 ACCBHI EQU 0x23 ;存放被乘數高 8 位和乘積第 24~31 位 ACCCLO EQU 0x24 ;存放乘積第 0~7 位 ACCCHI EQU 0x25 ;存放乘積第 8~15 位 ACCDLO EQU 0x26 ;臨時寄存器 ACCDHI EQU 0x27 ;臨時寄存器 TEMP EQU 0x28 ;臨時寄存器;******************************************************************************* ORG 0x0000 ; 復位入口地址 nop ; 兼容ICD調試工具,必須加nop goto Main ; 跳轉至Main函數;*************************Main 函數的代碼****************************************Main MOVLW 0x21 ; 被乘數0x3321送ACCB MOVWF ACCBLO MOVLW 0x33 MOVWF ACCBHI MOVLW 0x15 ; 乘數0x4015送ACCA MOVWF ACCALO MOVLW 0x40 MOVWF ACCAHI CALL Mpy_16 ; 調用雙字節無符號數乘法子程序,求積,結果應為0xCCC71B5 nop goto $ ; 停機;*********************************8 ×8 位無符號乘法子程序 ******************** ORG 0X0100Mpy_16 CALL SETUP ;調用子程序,將ACCB的值送ACCDMLOOP BCF STATUS, C ;清進位位 RRF ACCDHI ;ACCD右移 RRF ACCDLO BTFSC STATUS, C ;判斷是否需要相加 CALL Add_16 ;加乘數至 MB RRF ACCBHI ;右移部分乘積 RRF ACCBLO RRF ACCCHI RRF ACCCLO DECFSZ TEMP ;乘法完成否? GOTO MLOOP ;否,繼續求乘積 RETURN ;子程序返回;*****************************************************************************SETUP MOVLW .16 ;初始化TEMP寄存器 MOVWF TEMP MOVF ACCBLO, W ;被乘數送ACCD MOVWF ACCDLO MOVF ACCBHI, W MOVWF ACCDHI CLRF ACCBLO ;清ACCB CLRF ACCBHI CLRF ACCCLO ;清ACCC CLRF ACCCHI RETURN ;子程序返回;****************************************************************************Add_16 MOVF ACCALO, W ;ACCA和ACCB低8位相加 ADDWF ACCBLO, F BTFSC STATUS, C ;有進位否? INCF ACCBHI, F ;有,ACCB高位加1 MOVF ACCAHI, W ;ACCA和ACCB高8位相加 ADDWF ACCBHI, F RETURN ;子程序返回 ;*****************************************************************************END ; 程序結束

二、編寫宏命令Mpy_16,實現單字節無符號數乘法。編寫Main主程序調用宏命令并對運算結果進行測試。

程序框圖:PIC雙字節無符號數乘法的宏指令實現

list p=16f877A ;標明所用的處理器類型#include <p16f877A.inc> ;調用頭文件 __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF;******************************************************************************Mpy_16 macro ACCALO1,ACCAHI1,ACCBLO1,ACCBHI1,ACCCLO1,ACCCHI1,ACCDLO1,ACCDHI1,TEMP1 SETUP TEMP1,ACCBLO1,ACCBHI1,ACCCLO1,ACCCHI1,ACCDLO1,ACCDHI1 ;將ACCB的值送ACCDMLOOP BCF STATUS, C ;清進位位 RRF ACCDHI1 ;ACCD右移 RRF ACCDLO1 BTFSS STATUS, C ;判斷是否需要相加 GOTO NEXT Add_16 ACCALO1,ACCAHI1,ACCBLO1,ACCBHI1 ;加乘數至 MB NEXT RRF ACCBHI1 ;右移部分乘積 RRF ACCBLO1 RRF ACCCHI1 RRF ACCCLO1 DECFSZ TEMP1 ;乘法完成否? GOTO MLOOP ;否,繼續求乘積ENDM;*********************************************************************************SETUP macro TEMP2,ACCBLO2,ACCBHI2,ACCCLO2,ACCCHI2,ACCDLO2,ACCDHI2 MOVLW .16 ;初始化TEMP寄存器 MOVWF TEMP2 MOVF ACCBLO2, W ;被乘數送ACCD MOVWF ACCDLO2 MOVF ACCBHI2, W MOVWF ACCDHI2 CLRF ACCBLO2 ;清ACCB CLRF ACCBHI2 CLRF ACCCLO2 ;清ACCC CLRF ACCCHI2ENDM;********************************************************************************Add_16 macro ACCALO3,ACCAHI3,ACCBLO3,ACCBHI3 MOVF ACCALO3, W ;ACCA和ACCB低8位相加 ADDWF ACCBLO3, F BTFSC STATUS, C ;有進位否? INCF ACCBHI3, F ;有,ACCB高位加1 MOVF ACCAHI3, W ;ACCA和ACCB高8位相加 ADDWF ACCBHI3, F ENDM ;結束宏指令定義 ;**************************************************************** ACCALO EQU 0x20 ;存放乘數低8位 ACCAHI EQU 0x21 ;存放乘數高8位 ACCBLO EQU 0x22 ;存放被乘數低 8 位和乘積第 16~23 位 ACCBHI EQU 0x23 ;存放被乘數高 8 位和乘積第 24~31 位 ACCCLO EQU 0x24 ;存放乘積第 0~7 位 ACCCHI EQU 0x25 ;存放乘積第 8~15 位 ACCDLO EQU 0x26 ;臨時寄存器 ACCDHI EQU 0x27 ;臨時寄存器 TEMP EQU 0x28 ;臨時寄存器;**************************************************************************** ORG 0x0000 ; 復位入口地址 nop ; 兼容ICD調試工具,必須加nop goto Main ; 跳轉至Main函數;**************************************Main 函數的代碼***********************Main MOVLW 0x21 ; 被乘數0x3321送ACCB MOVWF ACCBLO MOVLW 0x33 MOVWF ACCBHI MOVLW 0x15 ; 乘數0x4015送ACCA MOVWF ACCALO MOVLW 0x40 MOVWF ACCAHI Mpy_16 ACCALO,ACCAHI,ACCBLO,ACCBHI,ACCCLO,ACCCHI,ACCDLO,ACCDHI,TEMP ;調用宏指令,求積,結果應為0xCCC71B5 nop goto $ ; 停機 ;******************************************************************************END ; 程序結束
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 3344永久免费| 亚洲午夜在线观看 | 日韩精品中文字幕在线播放 | 天天干导航 | 久久久久免费精品国产小说色大师 | 国产一级αv片免费观看 | 日本黄色一级视频 | 激情久久一区二区 | 99在线在线视频免费视频观看 | www.91在线观看 | 欧美视频国产 | 中文在线免费观看 | www.99热精品| 91成人在线免费 | 国产男女爽爽爽爽爽免费视频 | 国产精品自拍av | 久久久久91视频 | 欧美不卡 | 最新欧美精品一区二区三区 | 999精品久久久 | 99国产精品国产免费观看 | 一区二区三区日韩在线 | 欧美三级美国一级 | 精品中文字幕在线播放 | 性爱免费视频 | 亚洲成年人免费网站 | 久久久久久久一区 | 日本在线免费观看视频 | 国产做爰全免费的视频黑人 | 一级做受毛片免费大片 | 亚洲精品自在在线观看 | 在线观看美女av | 国产毛片在线看 | 日韩视频在线不卡 | 狠狠撸电影| 精品亚洲午夜久久久久91 | 欧美亚洲一区二区三区四区 | 禁漫天堂久久久久久久久久 | 免费国产网站 | 91香蕉国产亚洲一区二区三区 | 国产精品久久久久久久娇妻 |