1樓:甜甜圈的店鋪
movf 30h,w 將暫存器30h的值放入w暫存器
addwf 50h,f 把w暫存器與暫存器50h的值相加,結果放在50h
btfss status,c 判斷status暫存器裡的c位是否置1(這是一個進位標誌,判斷30h和50h的值相加時候有沒有產生進位),如果為1則跳過下一條指令(goto loop)
incf 20h,f 暫存器20h的值加1,結果存在20h(這是因為低位30h和50h相加時候產生進位了,所以高位要加一)
movf 20h,w 把20h的值放入w暫存器
addwf 40h,f 20h和40h的值相加,結果儲存在40h
其實整個程式的意思就是低位相加:30h+50h
再進行高位相加:20h+40h
中間加入判斷了一下30h+50h的時候有沒有進位產生
程式沒有問題。
2樓:
切忌:程式設計的重點是演算法,組合語言和c語言等都只是輔助工具。
16位資料相加的演算法:首先要讓低位相加並判斷有沒有進位產生,然後對兩種情況進行高位相加。
有了演算法,其它都好辦,愛放哪個暫存器就放哪個暫存器。
3樓:從曲以弘義
#include
//呼叫標頭檔案,可以去picc軟體下去查詢pic16f87xa微控制器的標頭檔案
__config(xt&wdten&lvpdis);
//定義配置字,晶振型別:xt,啟動開門狗,禁止低電壓程式設計
#define
hc138_a
re2//定義u6、u7、u8的a為re2埠
#define
hc138_b
re1//定義u6、u7、u8的b為re1埠
#define
hc138_c
re0//定義u6、u7、u8的c為re0埠
#define
u6_e
ra2//定義u6_e為ra2埠,u6e=1時,u6使能否則失能
#define
u7_e
ra3//定義u7_e為ra3埠,u7e=1時,u7使能否則失能
#define
u8_e
ra1//定義u8_e為ra1埠,u8e=1時,u8使能否則失能
#define
v1ra5
//定義v1為ra5埠
unsigned
inttmcon;
//---------------------------------------
//名稱:
初始化函式
//日期:20101001
//-----------------------------------------
void
init(void)
//---------------------------------------
//名稱:
t0初始化函式
//日期:20100501
//-----------------------------------------
void
timer0init(void)
//---------------------------------------
//名稱:
t0中斷函式(250us)
//日期:20101001
//-----------------------------------------
void
interrupt
isr(void)}}
//---------------------------------------
//名稱:
主函式//日期:20101001
//-----------------------------------------
void
main(void)}
PIC微控制器的序列通訊問題,PIC微控制器序列通訊的波特率又高速和低速之分,請問這兩者有什麼區別
注意,這裡說的高速 低速不是通常說的速度快就是高速,速度慢就是低速。這裡所謂的高速 低速,指的是同一個波特率因子下的波特率的快慢。得看一下式子 高速 波特率 fosc 16 x 1 fosc代表外部晶振 低速 波特率 fosc 64 x 1 從上面的公式可以看到,對同一個x,顯然用 fosc 16 ...
51微控制器好學還是pic微控制器好學
51好學一些,但是pic也沒比51難多少。我現在用的就是pic。首先,pic比51多個配置位,這個看看就懂了基本上。然後,pic的埠要配置成輸入或者輸出,51不用。pic的中斷沒有優先順序,需要軟體判斷。最後,pic比51多許多暫存器,你要使用pic的各種功能,都需要去初始化暫存器。再說說pic的優...
PIC微控制器判斷按鍵pic16F
你的埠設定為輸出的,那麼輸入就為高阻態是沒有辦法讀取資料的。rb口沒有上拉電阻可以配置rbpu位,使rb為弱上拉,埠要配置位輸入,才可以讀去該口的值。pic微控制器按鍵設計時最好是要上拉,按鍵按下就接地,按下讀取數值為低。如果把埠懸空,按鍵按下才接高電平,認為不按時沒有接高電平,沒有輸入為低電平,這...