導航:首頁 > 操作系統 > 61單片機編程指南

61單片機編程指南

發布時間:2022-05-27 10:52:29

單片機如何編程

建議你看一下單片機編程入門書籍來看,前提是要學會c語言。。

② 單片機怎麼編程

1、下個keil3軟體,新建工程之後,新建文件,寫文件名的時候,寫.asm後綴的就是寫匯編語言,寫.c後綴的就是寫C語言。
2、至於怎麼編程,單片機編程,重點就是掌握單片機有哪些I/o口,哪些寄存器,哪些特殊寄存器。
3、推薦看一下視頻《十天學會單片機》,搜一下都有的,對初學者非常有幫助。
4、另外補充一點,學單片機,光看書一年都學不會,邊看邊學,一個月就能入門了,所以最好弄一塊板子,在上面跑跑程序。

③ 單片機編程[懸賞]

給你個參考:
這是一個採集方向數據,然後保存到單片機的flash中的程序,用的是msp430f135單片機,方向採集模塊用的是串口電子指南針,都是本人親手寫的,調試後沒問題:如有疑問,聯系本人。[email protected]

/*採用p3口輸入 p2.0中斷 中斷一次採集一次同時寫入一次*/

#include <msp430x13x.h>
/*#define xie 10 0xea00 //5kb
#define xie 9 0xec00
#define xie 8 0xee00
#define xie 7 0xf000
#define xie 6 0xf200
#define xie 5 0xf400
#define xie 4 0xf600
#define xie 3 0xf800
#define xie 2 0xfa00 */
#define xie1 0xfc00
char a[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
char caiji[2],b=0;
int ifg;
void xie( );
void delay(int v) //延時子程序
{ while(v!=0)v--;}
void display(void) //顯示
{char x1,x2,x3;
x1=(caiji[1]/1+256*caiji[0])/100;
x2=((caiji[1]/1+256*caiji[0])%100)/10;
x3=(caiji[1]/1+256*caiji[0])%10;
P5OUT=a[x1];P4OUT=a[x2];P2OUT=a[x3];
}

void main(void)
{
WDTCTL= WDTPW + WDTHOLD;//關閉看門狗

BCSCTL1&=0X7F;
BCSCTL2|=0X88;//8M直通

int j;
P1DIR=0x00; // P1口為輸入
P2DIR=0xff; // P2 口為輸入
P4DIR=0XFF;
P5DIR=0XFF;

P3SEL|=0X30;
P3DIR|=0X10;

UCTL0|=SWRST;//這之後才能對串口模塊其它寄存器做修改
UCTL0=CHAR;//
UTCTL0=SSEL0+SSEL1;//時鍾源為ACLK(只能來自低速晶體)32768

UBR00=65;
UBR10=3;
UMCTL0=0X54;//波特率為9600

UCTL0&=~SWRST;//這之後發送模塊才能工作

ME1|=0x80+0x40;//允許串口模塊工作
IE1|=URXIE0+UTXIE0;//允許發送和接收中斷

IFG1=0X02;//使UTXIFG0復位
_EINT(); //使能中斷,這是一個C編譯器支持的內部過程。

while(1)
{
if(P1IN==0XFE)
{delay(6000);
if(P1IN==0XFE) //p1.0長按 寫模式
{P4OUT=0XF9;
for(j=1;j<2/*11*/;j++)
{
xie(j);
FCTL1=FWKEY; FCTL3=FWKEY+LOCK;//寫完鎖定
}
P4OUT=0x00;
}
}

if(P1IN==0XFD)
{delay(6000);
if(P1IN==0XFD) //p1.1長按 發送模式
{P5OUT=0XF9;
int seg,t;

for(seg=1;seg<2/*11*/;seg++)
{
char *fasong=(char *)xie1-0x0200*(seg-1);
for(t=0;t<512;t++)
{
TXBUF0=*(fasong+t);
delay(300);
}
}
}}}}

void xie(int an) //寫某一段
{ int i;
char *xie_an=(char *)xie1-0x0200*(an-1);
FCTL1=+FWKEY+ERASE;//擦除一段
FCTL3=FWKEY;//解鎖
*xie_an=0;//空寫 啟動擦除
FCTL1=FWKEY+WRT;//開始寫入數據
for(i=0;i<257;i++)
{ if (P1IN==0xFB|P1IN==0xbf)
{delay(6553);
if (P1IN==0xFB|P1IN==0xbf) //p1.2長按 向模塊發送91
{P2OUT=0xf9;TXBUF0=0x91;delay(65500);ifg=1;}
}
if(ifg==1)
{
*xie_an++=caiji[0];
*xie_an++=caiji[1];
ifg=0;display();
}
else
i=i-1;
}
}

#pragma vector=USART0TX_VECTOR //發送中斷
__interrupt void usart0_tx (void)
{;}

#pragma vector=USART0RX_VECTOR //接收中斷
__interrupt void UART0RX0_rx (void)
{
caiji[b]=RXBUF0;delay(300);b=b+1;
if(b==2)b=0;
}

④ 單片機編程學習步驟。

學習單片機入手的時候最好不從C開始,那樣的話對單片機硬體資源的理解會受到限制和影響,還是先學匯編較好。推薦兩本書《MCS-51/96系列單片機原理及應用》《51單片機C語言完全手冊》先看前一本,再學後一本。
至於C跟普通C差不多,只是為了包含單片機的硬體定義、資源,比如51單片機需要加頭文件:
include<reg51.h>,其他需要用到什麼函數加相應的頭文件就可以了,一般的應用只有這個頭文件就行。通訊一般用串口,有專門的串口寄存器和中斷比如:
初始化:
initser()
{
SCON=0x50;
TMOD=0x20;
TH1=TL1=0xfd;
TR1=1;
EA=1;
}
收發數據中斷:
serint() interrupt 4
{
if(RI)//收
{
RI=0;
dat=SBUF;
}
if(TI) //發
{
Ti=0;
}
}

⑤ C51單片機入門編程問題

1、你不要想它怎麼關聯的,它就是一種固定的寫法,語法就這樣。你只能這樣寫,也當你寫成這樣的時候,編譯器會認得出來它代表什麼的,寫成其它的話,編譯就會報錯了。所以不要再糾結這個問題。語法這樣定的,遵守就行了。
2、0xfe不是什麼地址,就是個簡單的賦值,OutData就是等於0xfe。
OutData要是指一個埠的話,最前面是要有宏定義的,比如

#define OutData P0
上面表示用OutData這個詞代替P0。
為什麼要麼定義,而不直接用P0就好了,你去查一下宏定義的好處就知道為什麼會有這種用法了~

⑥ 單片機C語言編程

KEY4EQU30H

KEY2EQU31H

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

CLREA

MOVSP,#5FH

MOVKEY2,#0

MOVKEY4,#0

LOOP:

JBP1.0,LOOP

MOVR7,#10

LCALLDELAY

JBP1.0,LOOP

JNBP1.0,$

MOVP3,#0C0H

LOOP0:

LCALLKEYDEAL

MOVA,KEY4

JNZLOOP41

MOVA,P3

ANLA,#0F0H

ORLA,#0EH

MOVP3,A

SJMPLOOP21

LOOP41:

DECA

JNZLOOP42

MOVA,P3

ANLA,#0F0H

ORLA,#0DH

MOVP3,A

SJMPLOOP21

LOOP42:

DECA

JNZLOOP43

MOVA,P3

ANLA,#0F0H

ORLA,#0BH

MOVP3,A

SJMPLOOP21

LOOP43:

DECA

JNZLOOP21

MOVA,P3

ANLA,#0F0H

ORLA,#07H

MOVP3,A

LOOP21:

MOVA,KEY2

JNZLOOP22

MOVA,P3

ANLA,#0FH

ORLA,#20H

MOVP3,A

SJMPLOOP3

LOOP22:

DECA

JNZLOOP3

MOVA,P3

ANLA,#0FH

ORLA,#10H

MOVP3,A

LOOP3:

LJMPLOOP0

;----------------------------

DELAY:

MOVR2,#2

DLY1:

MOVR3,#250

DJNZR3,$

DJNZR2,DLY1

DJNZR7,DELAY

RET

;-----------------------------

KEYDEAL:

JBP1.1,KEYEN1

MOVR7,#10

LCALLDELAY

JBP1.1,KEYEN1

JNBP1.1,$

INCKEY4

MOVA,KEY4

ANLA,#03H

MOVKEY4,A

KEYEN1:

JBP1.2,KEYEN2

MOVR7,#10

LCALLDELAY

JBP1.2,KEYEN2

JNBP1.2,$

INCKEY2

MOVA,KEY2

ANLA,#01H

MOVKEY2,A

KEYEN2:

RET

;-----------------------------

⑦ 單片機編程

;
ORG 0000H
MOV TMOD, #01H ;T0方式1定時.
SETB TR0 ;啟動T0
LOOP:
MOV TH0, #(65536-5000/2/2) / 256 ;送入初始值.
MOV TL0, #(65536-5000/2/2) MOD 256 ;定時2500us@6MHz
JNB TF0, $ ;等待定時完成.
CLR TF0 ;清除標志.
CPL P1.7 ;輸出方波.
SJMP LOOP ;無限循環.
END ;完.

⑧ 幫忙解釋一下單片機編程中的 每一個指令的意思和控制過程、急用、謝謝

mov tmod, #61h;將61h這個數賦給tmod寄存器,具體什麼模式你把它拆成16進制數對著寄存器看吧,好吧,剛幫你查了下,是:僅由TR0,TR1置位分別啟動定時器T0、T1,T0為計數功能,T1為定時功能。T1是自動重裝8位計數器,T0是16位計數器。
mov dptr, #15536 ;令dptr(記得是數據指針)的值為15536
mov tl0,dpl ;讓dptr的低8位的值給定時器t0的低8位
mov th0, dph ;把dptr的高8位的值給定時器t0的高8位
mov tl1, #236 ;讓t1的值為236
setb tr0;開啟t0
setb tr1;開啟t1
loop: jnb tf0,$; 表示測試tf0的值,如果不為1(為0)則程序繼續執行本條指令($表示當前位置),如果為1則順序執行下一條指令。 這里就是說當定時器T0溢出時進入下面的指令
clr tf0 ;清零tf0並進入下面的程序
mov dptr, #15536 ;與上面的意思一樣
mov tl0, dpl
mov th0, dph
clr p3.5 ;使3.5口為0
setb p3.5 ;使3.5口為1

jnb tf1 ,loop ;還是檢測,這次檢測tf1位的值,如果不為1則繼續本指令
clr tf1;令tf1為0,即低電平
大概就記得這些了 給你個參考吧

⑨ 單片機編程的整個流程

首先,你需要單片機吧,其次需要下載器,下載線,單片機模擬晶元等,如果你還要自己做電路,那麼還要一套電子工具,什麼電烙鐵,剪線鉗,鑷子,吸錫器什麼的.

我拿51系列單片機來舉例.

(1)首先你要做的是,規劃好你要做什麼,對設計的各個方面做一個粗略的規劃.如,編程要實現什麼,需不需要自己做電路....

(2)把電路圖畫好,對照電路圖做電路,如果自己做電路的話,你需要去電子城購買電子元器件,然後對照電路圖把硬體電路做好.檢查電路有沒有問題,如是否短路,虛焊什麼的...

(3)步驟2是針對較簡單的單片機最小系統,如果你做的電路有點復雜,最好做一塊PCB板,這時你就需要用電路編輯工具如DXP,等PCB文件發給生產PCB板的廠家加工,這個過程也不長,如果你經驗積累得很多的話.但要設計一塊好的PCB板,還有電路圖設計,這都是有很深的學問的.冰凍三尺,非一日之寒...

(4)通過步驟2,3你的硬體已有了,現在可以編程,編程也是分幾個階段的,但主要階段是:設計演算法-->繪制流程圖-->編寫代碼-->編譯-->下載-->運行或調試-->程序的優化.

其中,演算法設計的優劣很重要,它是決定你的設計的質量如何的一方面.繪制流程圖這個環節被很多人忽略,對於一些小程序,不需要繪制流程圖,但對於一個很大的程序,你沒有一個體系的思想,是很難寫下去的.但不否認,有這樣的高手,但我覺得要從一開始養成良好的習慣,簡單的畫畫流程圖是有好處的.日積月累,它會提高你編程的效率.接下來,編寫代碼,可以用KEIL軟體,其它還有什麼ASM什麼的.我知道的最多的都是用的KEIL.代碼編寫好後,編譯生成HEX,BIN文件,這兩種類型的文件都是可以下載到單片機的ROM中的.

(5)下載到單片機後,就開始運行了,或用模擬晶元進行在線調試,有問題就改,直到沒有問題為止.成功後,還需要反思一下,自己的設計還有沒有需要改進的地方.如程序需不需要優化,電路需不需要優化,換種演算法行不行....

(註:你問題中說要」做成一個晶元」,這一點我不知道.我沒做過.向ATMEL,SST,周立功等的工程師打聽打聽說不定會有更大的收獲.)

⑩ 單片機(編程)

1)將外部RAM 2000H-2010H 中大於127的單元的內容增1。
共17個位元組.
MOV DPTR, #2000H
MOV R2, #17
DDDD:
MOVX A, @DPTR
JNB ACC.7, NEXT ;大於等於128轉移.
ADD A, #1
MOVX @DPTR, A
NEXT:
INC DPTR
DJNZ R2, DDDD
SJMP $

2)將外部RAM 3000H-3010中非0單元的數據減1。
共17個位元組.
MOV DPTR, #3000H
MOV R2, #17
DDDD:
MOVX A, @DPTR
JZ NEXT ;為0轉移.
CLR C
SUBB A, #1
MOVX @DPTR, A
NEXT:
INC DPTR
DJNZ R2, DDDD
SJMP $

3)比較寄存器R3、R4中兩無符號數的大小,將較小者存入R5。
.
MOV A, R3
CLR C
SUBB A, R4
JNC R4_XIAO
MOV A, R3
MOV R5, A
SJMP EEE
R4_XIAO:
MOV A, R4
MOV R5, A
EEE:
SJMP $

閱讀全文

與61單片機編程指南相關的資料

熱點內容
給手機加密碼忘記了怎麼辦 瀏覽:596
單片機運算符 瀏覽:292
移動端微信商城源碼 瀏覽:442
編程貓下一個背景在哪裡 瀏覽:354
javaclasstype 瀏覽:234
樂高編程和樂高課的延伸 瀏覽:354
蘋果手機怎麼切換app美國賬號 瀏覽:861
編譯程序輸入一個字元串 瀏覽:407
圓命令畫法 瀏覽:308
如果給電腦e盤文件加密 瀏覽:801
javaswing項目 瀏覽:778
androidsdksetup 瀏覽:1005
pdf怎麼設置中文 瀏覽:128
安卓手機用什麼軟體看倫敦金 瀏覽:966
魅族文件夾無名稱 瀏覽:792
蘇黎世無人機演算法 瀏覽:876
核桃編程和小碼王的融資 瀏覽:686
微積分教材pdf 瀏覽:728
寫python給微信好友發消息 瀏覽:340
蚊帳自營米加密 瀏覽:422