當前位置:編程學習大全網 - 編程語言 - 請問如何將C或匯編源程序或燒到自己制作的PCB板上 謝謝···

請問如何將C或匯編源程序或燒到自己制作的PCB板上 謝謝···

壹. 安裝單片機程序編譯軟件KEIL。

1.點擊圖標 運行直至安裝完成。

2.點擊圖標 運行KEIL,然後選擇菜單“project”點擊“new……”點擊“ ”建立新的工程。填寫好工程文件名選擇保存路徑後按“保存”,此時彈出壹個窗口如下圖所示

點擊Atmel左邊的+號展開CPU的型號,選擇“AT89C51”按“確定”再生成壹個對話框如下圖,再按“是”即可。

這時在工程左邊的文件指示欄中多了壹個 這樣的圖標,點其左邊的+號可展開當前所包含的文件。

選擇菜單“File”“new”新建壹個文本編輯器,按保存按鈕,在彈出的窗口填入文件名後綴為.C ,然後按保存即把這個C文本文件保存到這個工程的目錄下。

再在工程左邊的文件指示欄中指著 點擊右鍵選擇 選項把剛才建立的C文件加入來,按“Add”即可加入,這時就可以在C文本編輯器裏編號程序了。

寫好程序後選擇菜單“project”選擇“ ”打開的對話框如下圖所示

如果彈出來的不是這個對話框時可以重復壹次“project”選擇“ ”便可以打開,打開後在 這個方框裏打上勾然後按“確定”才可以編譯生成單片機的燒寫文件HEX文件。這些選項都設置好並寫好源程序後就可以在菜單選項project選項中選擇 選項對源程序進行編譯,生成的HEX文件就在工程的目錄下。

本文章後面附帶的是HJSMSY-V1.0開發板的測試源程序,讀者可以將其復制到編譯器裏編譯。此程序為壹個簡單的計算器功能程序,數寫鍵依次對應電路板上的數字0--9,“A”鍵功能為清除,“B”鍵功能為等於,“C”鍵功能為+,“D”鍵功能為-,“E”鍵功能為*,“F”鍵功能為除。

二. 把單片機開發板用9針串口線與電腦連接好,用配套的USB供電線將單片機開發板供電,並關閉電路板上的電源開關。運行STC芯片燒寫軟件,

點擊圖標

打開下載界面如下圖

按這個圖裏面的設置設好參數後,點擊“Open File/打開文件”打開HEX文件,在打開的對話框中找到剛才所建立工程的目錄,在此目錄下可以找到剛才編譯得到的HEX文件,如果找不到則是還沒有在 這個方框裏打上勾,回到工程裏打上勾並按 編譯壹次就行了。打開HEX文件確定後就點擊下載軟件的 ,再打開單片機開發板上的電源開關,這時電腦便自動與單片機連接並把程序下載到單片機裏,下載完成後會有聲音提示的,或者可以在軟件界面上看得到。註:STC系列單片機是在開機的瞬間下載程序的,如果還未能連接成功可以關掉電源再開壹次即可。

//HJSMSY-V1.0單片機開發板測試程序.C

//-----------------------------------------------

// <<計算器>>

//-----------------------------------------------

//編寫人:李春起

//編定日期:2010.06.26

//修改日期:

//============================================================

#include <AT89X52.H>

#define uchar unsigned char

#define uint unsigned int

uint comdata,vardata,dispdata;

unsigned char flag=0,incflag=0,maxflag=10,maxvar=1;

//===========***陽數碼管段碼表==================================

uchar code SEG7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar code ACT[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

//================引腳定義=======================================

sbit yy=P3^2;

sbit jk=P3^4;

sbit k1=P2^3;

sbit k2=P2^2;

sbit k3=P2^1;

sbit k4=P2^0;

//=====子函數聲明======================================

void init(void);

void delay1(uint z);

void kk(void);

//===========程序初始化===============================

void init(void)

{

TMOD=0x01;

TH0=0xf4;

TL0=0x48;

ET0=1;

TR0=1;

EA=1;

}

//=====空操作延時子程序=======================

void delay1(uint z)

{

uint j,y;

yy=0;

for(j=0;j<z;j++)

{for(y=0;y<100;y++){;}}

yy=1;

for(j=0;j<z;j++)

{

for (y=0;y<3422;y++);

}

}

//========鍵盤掃描子程序===================

void kk(void)

{ P2=0xf0;

if(P2!=0xf0)

{

P2=0xef;

if(!k1){delay1(15);comdata=vardata;vardata=0;incflag=1;} //k13

if(!k2){delay1(15);comdata=vardata;vardata=0;incflag=2;} //k14

if(!k3){delay1(15);comdata=vardata;vardata=0;incflag=3;} //k15

if(!k4){delay1(15);comdata=vardata;vardata=0;incflag=4;} //k16

P2=0xdf;

if(!k1){delay1(15);if(vardata>6553){goto ab1;};vardata=((vardata*10)/maxflag+8*maxvar);dispdata=vardata;} //k9

ab1:if(!k2){delay1(15);if(vardata>6553){goto ab2;};vardata=((vardata*10)/maxflag+9*maxvar);dispdata=vardata;} //k10

ab2:if(!k3){delay1(15);vardata=0;dispdata=vardata;} // k11

if(!k4){delay1(15);switch (incflag){

case 1:{vardata=(comdata+vardata);dispdata=vardata;}break;

case 2:{vardata=(comdata-vardata);dispdata=vardata;}break;

case 3:{vardata=(comdata*vardata);dispdata=vardata;}break;

case 4:{vardata=(comdata/vardata);dispdata=vardata;}break;

default:break;

}

}//k12

P2=0xbf;

if(!k1){delay1(15);if(vardata>6553){goto ab3;};vardata=((vardata*10)/maxflag+4*maxvar);dispdata=vardata;} //k5

ab3:if(!k2){delay1(15);if(vardata>6553){goto ab4;};vardata=((vardata*10)/maxflag+5*maxvar);dispdata=vardata;} //k6

ab4:if(!k3){delay1(15);if(vardata>6553){goto ab5;};vardata=((vardata*10)/maxflag+6*maxvar);dispdata=vardata;} //k7

ab5:if(!k4){delay1(15);if(vardata>6553){goto ab6;};vardata=((vardata*10)/maxflag+7*maxvar);dispdata=vardata;} //k8

ab6:P2=0x7f;

if(!k1){delay1(15);if(vardata>6553){goto ab7;};vardata=((vardata*10)/maxflag+0*maxvar);dispdata=vardata;} //k1

ab7:if(!k2){delay1(15);if(vardata>6553){goto ab8;};vardata=((vardata*10)/maxflag+1*maxvar);dispdata=vardata;} //k2

ab8:if(!k3){delay1(15);if(vardata>6553){goto ab9;};vardata=((vardata*10)/maxflag+2*maxvar);dispdata=vardata;} //k3

ab9:if(!k4){delay1(15);if(vardata>6553){goto ab10;};vardata=((vardata*10)/maxflag+3*maxvar);dispdata=vardata;} //k4

ab10:;

}

}

//======定時器0中斷服務子程序================

void time0(void) interrupt 1

{

TH0=0xf4;

TL0=0x48;

P0=0xff;P1=0xff;

// 時鐘顯示子程序

switch(flag)

{

case 0:{P0=SEG7[dispdata%10];P1=ACT[0];flag=1;}break;

case 1:{P0=SEG7[(dispdata/10)%10];P1=ACT[1];flag=2;}break;

case 2:{P0=SEG7[(dispdata/100)%10];P1=ACT[2];flag=3;}break;

case 3:{P0=SEG7[(dispdata/1000)%10];P1=ACT[3];flag=4;}break;

case 4:{P0=SEG7[dispdata/10000];P1=ACT[4];flag=5;}break;

case 5:{P0=SEG7[0];P1=ACT[5];flag=0;}

default:break;

}

}

//=========主函數======================================

void main()

{

init();

yy=1;

jk=0;

while(1)

{

if((vardata/1000)>=9){maxflag=10;maxvar=0;}

else {maxflag=1;maxvar=1;}

kk();

}

}

  • 上一篇:電動車充電器十大品牌
  • 下一篇:網易卡編程遊戲代碼。
  • copyright 2024編程學習大全網