導航:首頁 > 編程語言 > 51單片機的程序改成430

51單片機的程序改成430

發布時間:2025-02-07 05:22:20

『壹』 如何把程序裝到單片機里

以stc的單片機為例:
1、用keil編程軟體寫好程序,編譯輸出為hex和二進制文件
2、用串口電平轉換板(常用MAX232晶元來做),把電腦後面的com口和單片機的(Rxd、Dxd引腳)相連,單片機還要接晶振和電源。
3、在電腦運行stc公司提供的STC-ISP軟體,把前面編譯好的hex文件裝到單片機里。

提到的軟體都可從網上下載獲得,電平轉換部分可以自己做也可以買編程器。

『貳』 MSP430改中斷優先順序

Timer_A有個中斷請求寄存器TAIV用來確定中斷請求的中斷源。該寄存器共16位,位5-15與位0全為0,位1-4的數據有相應的中斷標志產生。
1.中斷嵌套,優先順序
430總中斷的控制位是狀態寄存器內的GIE位(該位在SR寄存器內),該位在復位狀態下,所有的可屏蔽中斷都不會發生響應。可屏蔽中斷又分為單中斷源和多中斷源的。單中斷源的一般響應了中斷服務程序中斷標志位就自動清零,而多中斷源的則要求查詢某個寄存器後中斷標志位才會清零。由於大多數人接觸的第一款單片機通常是51,51單片機CPU在響應低優先順序的中斷程序過程中若有更高優先順序的中斷發生,單片機就會去執行高優先順序,這個過程已經產生了中斷嵌套。而430單片機則不同,如果在響應低優先順序中斷服務程序的時候,即使來了更高優先順序的中斷服務請求,430也會置之不理,直至低優先順序中斷服務程序執行完畢,才會去響應高優先順序中斷。這是因為430在響應中斷程序的時候,總中斷GIE是復位狀態的,如果要產生類似51的中斷嵌套,只能在中斷函數內再次置位GIE位。

2.定時器TA
TimerA有2個中斷向量。TIMERA0,TIMERA1
TIMERA0隻針對CCR0的計數溢出
TIMERA1再查詢TAIV後可知道是CCR1,還是CCR2,亦或TAIFG引起的,至於TAIFG是什麼情況下置位的,則要看TA工作的模式
具體看用戶手冊。還有一點TA本身有PWM輸出功能,無須借用中斷功能。在這個問題上經常出現應用彎路的是如何結合TA和AD實行定時采樣的問題,很多人都是在TA中斷里打開AD這樣來做。這是不適宜的,因為430 的ADC10,ADC12(SD16不熟悉,沒發言權)模塊均有脈沖采樣模式和擴展采樣模式。只要選擇AD是由TA觸發采樣,然後把TA設置成PWM輸出模式,當然輸出PWM波的都是特殊功能腳,但是在這里它是不需要輸出的,所以引腳設置不必理會。值得關心的就是PWM的頻率,也就是你AD的采樣率。

3.看門狗復位
看門狗有2種工作模式:定時器 ,看門狗
定時器工作模式下WDTIFG在響應中斷服務程序有標志位自動復位,而在看門狗模式下,該標志位只能軟體清零。但是怎麼判斷復位是由於WDT工作在看門狗模式下的定時溢出引起的,還是看門狗寫密鑰錯誤引起的呢?………………………………
答案是沒有方法,至少我沒見過有什麼方法,也沒見過周邊的人有什麼方法。若有人知道方法謝謝分享。
4.經常有人會問這個語句的MOV.B #LPM0,0(SP)的作用。假如你在進入中斷函數之前,430是在LPM0下待機,若要求執行完中斷函數之後進入LPM3待機,在中斷函數里寫MOV.B #LPM3,SR是無效的。因為在進入中斷時430會把PC,SR壓棧,( SR內保存著低功耗模式的設置)即使你寫了MOV.B #LPM3,SR,在退出中斷出棧時SR會被重新設置成低功耗0,要達到這樣的目的,只能更改堆棧內SR的設置:MOV.B #LPM0,0(SP)。

5中斷向量:
430的中斷向量是FFE0H—FFFFH,一共32個位元組也就是FLASH的最後一段,430的FLASH有大有小,但是最後地址肯定是FFFFH(大FLASH超過64K的除外)所以它們的起始地址是不一樣的,而一般IAR默認編譯都是把程序放在FLASH開始的位置(不包括信息段)。
有個值得弄清楚的問題是:什麼是中斷向量?中斷向量實際就是保存中斷函數入口地址的存儲單元空間。就像FFFEH+FFFFH這2個位元組是復位中斷向量,那麼它存儲的就是主函數在FLASH內的起始地址,假如主函數保存在以0x1100為起始地址的FLASH塊內,那麼你會發現FFFFH 內保存的是0x11, FFFE內保存的是0x00.其他什麼TimerA,ADC12,所有的都一樣。只是你每次寫的程序長短不一,中斷函數放的位置不一樣。IAR編譯器都會給你定好,然後在你用JTAG燒寫程序的時候,把這個地址,燒寫到相應的中斷向量。因為中斷函數所處地址可以由用戶自定義,也可以讓IAR自動編譯,所以這個地址除了源代碼開發人員知道,其他人是不知道的,BSL就是應用這32個位元組的中斷向量內的內容的特殊性設置的密碼。但是有幾個東西在430是不變的,就是觸發中斷的條件滿足後,它到哪個地方去定址中斷服務函數的入口地址,是TI 在做430時就固化好,定死的。比方說上電復位的時候,它知道去FFFE,FFFF單元找地址,而不去FFE0,FFE2找地址,這個映射關系是430固化不變的。可有的時候你就是需要改變「中斷向量」,這怎麼辦?430FLASH程序自升級里有時就會碰到這個問題,方法是在430原來默認的中斷向量表內做一個跳轉操作,同樣以上電復位為例:
ORG 0x2345
PowerReset: mov.w &0xFCFE,PC
…………………………
…………………………
ORG 0xFFFE
DW PowerReset
這樣的話0xFCFE就相當是0xFFFE的映射了

借別人的話,挺好!看看吧

『叄』 基於msp430單片機的ADC0809模數轉換的c語言程序

ADC0809這個入門級AD轉換驅動程序一搜一大把,真是浪費你的積分啊!51平台上的程序稍加修改不就能在430上跑了么!自己研究研究,有百益而無一害!

『肆』 1,若某一51單片機系統的晶振頻率為6MHz(12MHz),試編一個延時1s(2s)的程序。

;本程序所用抄晶振為12MHz,12周期模式

;定時時間為0.5秒的延時器
nop
LCALL DELAY ;4uS
;執行上句的時間:4+499995+1(ret時間)=0.5秒
NOP

;=======包含LCALL DELAY是0.5秒====
DELAY:
MOV R7,#9 ;1uS
DELAY1:
MOV R6,#128 ;1uS
DELAY2:
MOV R5,#215 ;=215*2=430uS
NOP ;1uS
DJNZ R5,$
;上一句執行完後用時:215*2=430uS
DJNZ R6,DELAY2
;執行完上句後用時:[430+2(是上句每次執行時間)+1(執行MOV R5的時間)+1(nop)]*128=55552uS
DJNZ R7,DELAY1
;執行完上句後用時:[55552+2(本句每次執行時間)+1(MOV R6的時間)]*9=499995uS
RET ;1uS

『伍』 如何用C語言編程使單片機產生方波信號

普通51的話需要模擬PWM,如果是加強版51有內置PWM模塊,

PIC和AVR以及430還有STM也有集成PWM的型號!

如果是單純輸出方波的話就簡單了。

程序如下:

//功能,按下P1_0的開關降低頻率,按P1_1為升高頻率

#include<AT89X52.H> //引用AT89X52的庫文件

#defineucharunsignedchar //替換簡稱

#defineuintunsignedint //替換簡稱

ucharsm; //定義臨時變數

voiddelay_ms(uintms) //延時子函數,一個循環12uS

{

while(--ms);

}

voidT0_IRQ(void)interruptTF0_VECTOR //定時器0中斷函數

{

TH0=sm; //將變數賦予定時器0的高位

P2_0=!P2_0; //翻轉IO

}

//寄存器初始化子函數

voidmcu_init()

{

ET0=1; //開定時器0中斷

EA=1; //開總中斷

TMOD=0x01; //設置為16位定時器0

TH0=0xFF; //填充定時器高位

TR0=1; //開定時器0

sm=0xFF; //變數初始化

}

voidmain() //主函數

{

mcu_init(); //調用初始化函數

while(1) //主循環

{

if((!P1_0)||(!P1_1)) //檢測是否有按鍵按下

{

delay_ms(8333); //延時去抖

if(!P1_0) //如果是P1_0按鍵按下

{

while(!P1_0); //等待按鍵放手

if(sm) //檢測變數不為0

{

--sm; //自減1

P2_1=1; //取消邊界LED

}

elseP2_1=0; //到達邊界點亮LED

}

elseif(!P1_1) //否則如果P1_1按鍵按下

{

while(!P1_1); //等待按鍵放手

if(sm<0xFF) //檢測變數小於0xFF

{

++sm; //自加1

P2_1=1;

}

elseP2_1=0;

}

}

}

}

閱讀全文

與51單片機的程序改成430相關的資料

熱點內容
項目負責人簽署的文件有哪些 瀏覽:659
iphoe6升級後id驗證失敗 瀏覽:105
鴻蒙系統手機文件哪些可以刪除 瀏覽:983
90版本貪食之痕怎麼做 瀏覽:261
datedatetimejava 瀏覽:392
招貼的源文件格式是什麼 瀏覽:273
榮耀如何不顯示文件夾圖片 瀏覽:216
mysqlssh資料庫 瀏覽:113
of文件夾 瀏覽:430
u盤刪除文件能恢復嗎 瀏覽:948
java用遞歸求階乘 瀏覽:905
jsp跳轉到後台 瀏覽:907
u盤win10恢復盤 瀏覽:864
招聘專員如何使用招聘網站 瀏覽:232
孩子學學而思和編程哪個好 瀏覽:376
為什麼12306當前用戶名和密碼是什麼 瀏覽:193
機櫃裡麵包含哪些網路設備 瀏覽:646
java字元串轉編碼 瀏覽:967
word多個列印順序 瀏覽:34
加拿大交友app 瀏覽:956

友情鏈接