導航:首頁 > 操作系統 > 單片機300個程序

單片機300個程序

發布時間:2022-12-09 15:51:09

A. 用C語言編寫8051單片機程序

/********************************
/* MCU: AT89S52
/* MCU-crystal: 12M
/* Version: 01
/* Last Updata: 2009-2-21
/* Author:
/* Description:
/* 使用定時器0,定時中斷2ms一次對數碼管顯示掃描;
/* 三個位管要以掃描方式顯示,使用共陽管,計數速度為1S;
/* 段A-H接到P0.1....7,位選為 P1.0,1,2;
/* 流水也以計數方式從200到250在P2口顯示,低電平有效;
/****************************************************/
#include <reg52.h>
unsigned char code num_disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90};//共陽數字字形0到9
unsigned char code bit_sel[]={0xfb,0xfd,0xfe};//低電平有效數字個十百位選擇
unsigned char buf[3]={0,0,2};//計算中的個十百位暫時存放處
unsigned char one,ten,second;//個十位變數和流水燈顯示3秒的時間變數
unsigned char rate;//掃描速度,調整以適應顯示效果
unsigned char stop=0, flag=1,flag1=0;//閃爍3秒的標志位,用於主函數對中斷的關斷參數傳遞
unsigned int t,tt;//2ms變數
unsigned char rate;//與變數t同步,輔助賦值變

/**********主函數**********/
main(void)
{
TMOD=0X01;
TH0=0xf8;//定時2ms
TL0=0x30;
ET0=1;
EA=1;
TR0=1;
while(1)
{ if(stop==1)//判斷stop信號,為1後便關閉定時器
{ TR0=0;
ET0=0;
EA=0;
}
}
}
/*******************中斷*******************/
void timer0() interrupt 1
{
TH0=0xf8;//重新賦值定時2ms
TL0=0x30;
if(flag==0)//定義用於判斷計數是否到了250,若到了則不再計數,轉向else執行流水燈閃爍任務
{
t++;
if(t==500)
{ t=0;
one++;
P2=200+ten*10+one; //在P2口的流水等,也是從200開始計數。
if(one==10)
{ one=0;
ten++;
if(ten==5)
{ flag=1;//轉向執行閃爍任務
}
}
}
}
else//flag已經==1;轉向else執行流水燈閃爍任務
{ tt++;
if(tt==500)
{ tt=0;
second++;
P2=~P2;//流水燈全部以1S速度閃爍
if(second==3)stop=1;//判斷3秒時間到,關閉中斷,停止閃爍,數碼管熄滅
}
}
rate++;
P0=0XFF;//消隱
if(rate==3)rate=0;
P0=num_disp[buf[rate]];
P1=bit_sel[rate];
buf[0]=one;
buf[1]=ten;
//因為百位沒有變,所以不用賦值

}

B. 一個花樣流水燈單片機程序(要求1,3,5,7燈亮,2,4,6,8燈亮然後全滅)

先把P1口全部接低電平。

ORG 0000H。
AJMP START。
ORG 0040H。
AA:MOV P1,#55H。


ACALL DELAY。
MOV P1,#0AAH。
ACALL DELAY。
MOV P1,#00H。


ACALL DELAY。
AJMP AA。

DELAY:MOV R5,#256。
LOOP2:MOV R4,#256。
LOOP1:NOP。
NOP。


DJNZ R4,LOOP1。
DJNZ R5,LOOP2。
RET。

單片機(Single-Chip Microcomputer)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統。

在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊晶元就成了一台計算機。

它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。

單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。

C. 51單片機設計流水燈程序,用C語言

#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
voiddelay(void)
{
uchari,j;
for(i=0;i<150;i++)
for(j=0;j<240;j++);
}
main()
{
ucharled,i,j;
while(1)
{
for(i=0;i<8;i++)
{
led=0xfe<<i;
for(j=0;j<8-i;j++)
{
P0=led;
led=_crol_(led,1);
delay();
}
}
}
}

D. 單片機程序解釋

1、
ORG 0000H //程序入口
LJMP START //跳到START處
ORG 000BH //定義定時器/計數器T0的中斷入口地址
LJMP T0_INT //跳到T0_INT處,即T0中斷的服務程序標號
START:
MOV TMOD, #02 //設置定時器/計數器的工作方式,這里為方式2,8位的常數自動重裝
MOV TH0, #6 //定時器置初值,T0的高位
MOV TL0, #6 //定時器置初值,T0的低位
MOV R7, #40 //賦值
MOV R6, #50 //賦值
CLR P3.4 ;輸出低電平,開始響了// P3.4位清零
SETB TR0 //啟動定時器
LLLL:
JNB TF0, $ ;等待 //等中斷時間到
CLR TF0 //定時器的溢出標志位清零
DJNZ R7, LLLL
MOV R7, #40
DJNZ R6, LLLL //循環中斷,一直讓時間間隔滿足0.5秒
MOV R6, #50
CPL P3.4 ;輸出高電平,停止發音 // P3.4 取反
CLR TR0 //關閉定時器
SJMP $
END

2、 ORG 0000H //程序的入口地址
LJMP START //跳到START處
ORG 000BH //定義定時器T0的中斷入口地址
LJMP T0_INT //跳到T0的中斷服務程序處
START:
MOV TMOD, #02 //設置定時器/計數器的工作方式,這里為方式2,8位的常數自動重裝
MOV TH0, #6 //定時器置初值,T0的高位
MOV TL0, #6 //定時器置初值,T0的低位
SETB TR0 //啟動定時器T0
MOV IE, #10000010B 開啟允許總中斷和T0中斷
MOV R7, #40 //賦值
MOV R6, #50 //賦值
SJMP $ //等待中斷
T0_INT: // 中斷服務程序
DJNZ R7, T0_END
MOV R7, #40
DJNZ R6, T0_END
MOV R6, #50 //以上的都是為了讓時間足夠
CPL P3.4 // P3.4取反
T0_END:
RETI //子程序返回
END

閱讀全文

與單片機300個程序相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:142
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:732
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:301
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:141
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:890
app轉賬是什麼 瀏覽:163