導航:首頁 > 編程語言 > 51編程中文

51編程中文

發布時間:2022-08-19 00:42:45

㈠ 51單片機編程

用模擬圖來實現,很容易,P2口接8個LED燈,把41H送P2口,由8個LED燈顯示出來即可。

模擬圖如下

匯編程序

MOV P2,#41H

SJMP $

㈡ 51單片機編程軟體英文版怎樣改成中文版

開源軟體mcu8051ide 功能不是一般的強,用c語言編程,界面不輸給商業軟體,而且提供多種模擬器件如:led 數碼管,矩陣數碼管(8×8)按鍵,矩陣按鍵,甚至溫度感測器。開源的沒有任何限制,完全免費,自動生成多種燒錄文件(我們一般就用.HEX的)感覺keil c弱爆了。

㈢ 51單片機編程軟體中文版誰有

開源軟體mcu8051ide 功能不是一般的強,用c語言編程,界面不輸給商業軟體,而且提供多種模擬器件如:led 數碼管,矩陣數碼管(8×8)按鍵,矩陣按鍵,甚至溫度感測器。開源的沒有任何限制,完全免費,自動生成多種燒錄文件(我們一般就用.HEX的)感覺keil c弱爆了。
安裝方法,下載sdcc(mcu8051ide是基於sdcc的)和mcu 8051 ide都安裝好就可以啦,頭文件在sdcc的安裝文件夾內(include)有些關鍵字要加兩個連在一起的下劃線比如 __interrup, __code.
頭文件與keil的不通用,比如定義P0口
在keil下是: sfr P0=0x80; 在sdcc下是: __sfr __at P0 0x80; 這個P0^1的不行,但sdcc裡面有很多頭文件8051.h 80c51.h 80c52.h等等 基本滿足要求,給stc單片機編程不用改,加一點特殊的就可以。這樣優秀的開源軟體不用真的是白不用啊。一般開源軟體沒有中文版,而這款軟體居然可以選擇中文,在配置裡面有簡體中文。爽到極點啊,真懷疑是不是國內高手開發的。

㈣ 用51單片機編程

單片機中只有一條語句是對進制調整的
DA A 對累加器A的結果進行十進制調整
如果隨意對一個累加器A中的二進制數據進行「二進制轉十進制」調整是沒有任何實際意義的!

DA調整的對象是ADD或ADDC以後的結果,而且是BCD碼相加以後才能夠加以調整,否則沒有實際意義!

比如,現在我想執行12D+39D也就是兩個十進制數相加這樣一個加法(有時候程序處理的需要,數據在單片機中是以BCD碼的形式存儲的,也就是12H和39H(十六進制),但我們可以人為將它們看為12D和39D(十進制),而且還希望相加以後的結果為51H,也就是說符合十進制運算規則12+39=51,而不是4BH的結果),但這樣的十進制加法運算在單片機中是不能夠直接實現的。因為單片機只能夠執行二進制加法指令,也就是所有的運算都按照二進制中的規則進行!

於是就出現了DA調整指令!

現在12H+39H,將12H放於A中,執行 ADD A,#39H指令,則結果為4BH,這不是我們希望的51H的數據形式!!這時執行DA A 指令後,就會將A中的數據調整為51H(具體調整過程和原理你可以詳細看書,如果單片機書中講的不詳細,那麼微機原理中一定說的非常詳細),而我們按照BCD碼規則就將其看為51D,符合我們的要求!

也就是說加數和被加數都是BCD碼的形式,最大也只可能是99H,也就是我們十進制數中的99,只有這樣才會有實際的意義!
所以DA A指令只用於十進制BCD碼加法指令以後,否則是沒有實際意義的!
在單片機中數據就是以二進制存放的也可以說是以16進制存放(4位二進制就是16進制),所以一般來說在單片機只有二進制轉十進制才有意義,通過單片機將十進制轉二進制是沒意義的。 這個一般都是我們自己把一個十進制數轉成二進制再送給單片機處理。
非得編寫程序的話 程序如下
----------------------------------------------------------------------
;二進制整數(2位)轉換為十進制整數(組合BCD碼)
;入口: R3,R4
;出口: R0
IBTD22 : MOV A,R0
PUSH A
MOV R7,#03H
CLR A
IBD221 : MOV @R0,A
INC R0
DJNZ R7,IBD221
POP A
MOV R0,A
MOV R7,#10H
IBD222 : PUSH A
CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV B,#03H
IBD223 : MOV A,@R0
ADDC A,@R0
DA A
MOV @R0,A
INC R0
DJNZ B,IBD223
POP A
MOV R0,A
DJNZ
--------------------------------------------------
;二進制整數(M位)轉換為十進制整數(組合BCD碼)
;入口: R1,M,N
;出口: R0
IBTDMN : MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV B,N
CLR A
IBDMN1 : MOV @R0,A
INC R0
DJNZ B,IBDMN1
MOV A,M
SWAP A
RR A
CLR C
MOV R7,A
IBDMN2 : MOV A,R2
MOV R0,A
MOV A,R3
MOV R1,A
MOV B,M
IBDMN3 : MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ B,IBDMN3
MOV B,N
IBDMN4 : MOV A,@R0
ADDC A,@R0
DA A
JNB ACC.4,IBDMN5
SETB C
CLR ACC.4
IBDMN5 : MOV @R0,A
INC R0
DJNZ B,IBDMN4
DJNZ R7,IBDMN2
MOV A,R2
MOV R0,A
RET
----------------------------------------------------------------
BCD整數轉換為二進制整數(1位)
;入口: R0(高位地址),R7
;出口: R4
IDTB1: CLR A
MOV R4,A
IDB11: MOV A,R4
MOV B,#0AH
MUL AB
ADD A,@R0
INC R0
MOV R4,A
DJNZ R7,IDB11
RET
------------------------------------------
;BCD整數轉換為二進制整數(N位)
;入口: R1(高位地址),M,N
;出口: R0
IDTBMN : MOV A,R0
MOV R2,A
MOV B,N
CLR A
IDBMN1 : MOV @R0,A
INC R0
DJNZ B,IDBMN1
MOV A,R2
MOV R0,A
MOV A,M
MOV NCNT,A
IDBMN2 : MOV R7,N
CLR A
CLR F0
IDBMN3 : XCH A,@R0
MOV B,#0AH
MUL AB
MOV C,F0
ADDC A,@R0
MOV F0,C
MOV @R0,A
INC R0
MOV A,B
DJNZ R7,IDBMN3
MOV A,R2
MOV R0,A
MOV A,@R1
INC R1
ADD A,@R0
MOV @R0,A
DJNZ NCNT,IDBMN2
RET
----------------------------------------------------------
NDIV31 : MOV A,R2
MOV B,R7
DIV AB
PUSH A
MOV R2,B
MOV B,#10H
NDV311 : CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV F0,C
CLR C
SUBB A,R7
JB F0,NDV312
JC NDV313
NDV312 : MOV R2,A
INC R4
NDV313 : DJNZ B,NDV311
POP A
CLR OV
JZ NDV314
SETB OV
NDV314 : XCH A,R2
MOV R7,A
RET

㈤ 51單片機編程,用C語言。

給你一個矩陣鍵盤的參考程序
行列掃描:通過高四位全部輸出低電平,低四位輸出高電平。當接收到的數據,低四位不全為高電平時,說明有按鍵按下,然後通過接收的數據值,判斷是哪一列有按鍵按下,然後再反過來,高四位輸出高電平,低四位輸出低電平,然後根據接收到的高四位的值判斷是那一行有按鍵按下,這樣就能夠確定是哪一個按鍵按下了。
/****************************************************************************
*函數名 :KeyDown
*函數功能 : 檢測有按鍵按下並讀取鍵值
*輸入 : 無
*輸出 : 無
****************************************************************************/
voidKeyDown(void)
{
char a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
{
Delay10ms();//延時10ms進行消抖
if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
{
GPIO_KEY=0X0F; //測試列
switch(GPIO_KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d): KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//測試行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0))//按鍵鬆手檢測
{
Delay10ms();
a++;
}
}
}
}

㈥ 求Kei|51單片機編程軟體中文版

這位朋友你好,我也是自學單片機出來的,我英語也不好,不過用這個Kei|51單片機編程軟體也不難,第一步,建立項目,第二步,建立文件,第三步,編譯調試,裡面的設置看一下中文說明就可以了,網上很多的,希望能幫到你

㈦ 求51單片機編程方式

按鈕要接在單片機的中斷引腳上,如P3.2和P3.3.
然後開中斷:如
EX0=1 //開外部中斷1
EA =1 //開總中斷
IT0=1//下降沿觸發
p0到p2的控制可以在中斷程序中,也可以在主程序中。

㈧ 51單片機編程問題(匯編語言)

;
ORG0000H
JMPMAIN
ORG000BH
JMPTC0S
ORG001BH
JMPTC1S
MAIN:
MOVTMOD,#61H
MOVTH1,#0F6H
MOVTL1,#0F6H
SETBTR1

SETBET1
SETBET0
SETBEA

CLRP1.7
SJMP$
;
TC1S:;收到了10個脈沖,發生T1計數中斷
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0;令T0定時50ms
SETBP1.7
RETI

TC0S:;到了50ms
CLRP1.7
CLRTR0
RETI
END

㈨ 51單片機編程

程序修改如下:
#include<reg51.h>
unsignedcharLedChar[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90
};
voidmain()
{
unsignedchari=0;
while(1)
{
P2=0xfe;
P0=LedChar[2];
for(i=0;i<300;i++);
P2=0xfd;//親,這里有錯誤
P0=LedChar[1];
for(i=0;i<300;i++);
}

}

閱讀全文

與51編程中文相關的資料

熱點內容
可以玩光遇的安卓手機有什麼 瀏覽:32
財務編程薪資 瀏覽:483
pr音樂文件編譯不了 瀏覽:124
linuxigmp 瀏覽:481
dis怎麼編譯 瀏覽:886
如何在手機上玩我的世界電腦伺服器 瀏覽:97
unix教程pdf 瀏覽:813
壓縮空氣氣閥卡死 瀏覽:787
江蘇加密優盤公司 瀏覽:650
linuxiso製作u盤啟動盤 瀏覽:622
公網伺服器如何變成nas 瀏覽:696
區塊鏈抗量子加密 瀏覽:1000
文件夾顯示字體怎麼調整 瀏覽:62
沈陽華潤三洋壓縮機官網 瀏覽:898
彩票改演算法 瀏覽:308
雲伺服器不便宜 瀏覽:216
snort安裝linux 瀏覽:173
java多個項目 瀏覽:729
win服務安裝編程 瀏覽:879
如何關閉魅族推送伺服器 瀏覽:309