導航:首頁 > 操作系統 > 單片機作業

單片機作業

發布時間:2022-04-21 21:01:41

單片機作業求救!

1:
RMD:
MOV R2,#0
MOV DPL,#0
RMDP:
MOV DPH,#20H
MOVX A,@DPTR
MOV DPH,#30H
MOVX @DPTR,A
MOV DPH,#10H
MOV A,R2
MOVC A,@A+DPTR
MOV DPH,#20H
MOVX @DPTR,A
INC R2
INC DPTR
CJNE R2,#6,RMDP
RET
2:
SERCHM:
MOV R0,#30H
MOV R2,#20
MOV B,#0
SM:
MOV A,@R0
CJNE A,#'M',SM1
INC B
SM1:
INC R0
DJNZ R2,SM
MOV A,B
JZ SM2
MOV A,#'Y'
RET
SM2:
MOV A,#'N'
RET
4:
DATC:
MOV DPL,#0
MOV R0,#30H
MOV R2,#30H
DATC1:
MOV DPH,#20H
MOVX A,@DPTR
MOV @R0,A
MOV DPH,#10H
MOVX @DPTR,A
CLR A
MOV DPH,#20H
MOVX @DPTR,A
INC DPTR
DJNZ R2,DATC1
RET

⑵ 單片機程序作業,在線等!!!!!!!!!!!!!!!急啊!!!!!!!!!!!!!!

#include<reg51.h>
#include<INTRINS.h>
#defineu16unsignedint
#defineu8unsignedchar

u16count=0; //計數設定值
u16countTemp=0;//計數
u8zt=0; //狀態
sbitfmq=P1^0; //蜂鳴器
u16jsflag=0; //閃爍計時用


/*********************************************************/
u8ds[4];//數碼管顯示緩存
//共陰
codeu8w[]={0xf1,0xf2,0xf4,0xf8}; //位碼
codeu8d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//斷碼
voiddispaly(){//顯示函數
staticu8a;
if(++a>3)a=0;
P0=0xFF;
P2=w[a];
P0=d[ds[a]];
}


/****************************************/
voidinit() //初始化函數
{TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;

}

/******************************************/
u8key=0xff;//消抖後的有效按鍵值
u8key_down=0x00;//按鍵下降沿掃描結果,1有效
u8key_up=0x00; //上升沿掃描結果,1有效
u8key_sc=0xff;//上次掃描的按鍵值
//檢測端下降沿檢測
sbitk1=P2^4;
sbitk2=P2^5;
sbitk3=P2^6;
sbitk4=P2^7;
//按鍵掃描程序
voidscanKey(){
staticu8temp0;
staticu8ms;
u8temp=0;
if(k1==1)temp|=0x01;
if(k2==1)temp|=0x02;
if(k3==1)temp|=0x04;
if(k4==1)temp|=0x08;
if(temp==temp0){//按鍵消抖
if(++ms>=5){//連續5次掃描的值一樣,則認為是穩定狀態
key=temp;
ms=0;
}
}else{
temp0=temp;
ms=0;
}
key_down=key_sc&(~key);//下降沿掃描
key_up=(~key_sc)&key;//下降沿掃描
key_sc=key;
}

u8readPIN(u8port,u8pin){
codeu8tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
return((port&tab[pin])==0?0:1);
}

/***********************************/
//預置狀態
u16anjs=0;//長按計數標志
voidyzzt(){
ds[0]=count/1000%10;//設置值送入顯示緩存
ds[1]=count/100%10;
ds[2]=count/10%10;
ds[3]=count%10;
if(readPIN(key,0)==0){//k1按下
if(readPIN(key_down,0)==1){//下降沿,即剛按下
if(++count>9999)count=0;//加1
anjs=2000;//倒計時2s
}
if(anjs==0){//倒計時到
anjs=200;//倒計時0.2s
if(++count>9999)count=0;//加1
}
}

//減1
if(readPIN(key,1)==0){
if(readPIN(key_down,1)==1){
if(--count>9999)count=9999;
anjs=2000;
}
if(anjs==0){
anjs=200;
if(--count>9999)count=9999;
}
}

if(readPIN(key_down,2)==1){//計入計數
zt=2;
}
}

//計數狀態
voidjszt(){
if((countTemp==count)&&(jsflag<=500)){//閃爍
ds[0]=10;
ds[1]=10;
ds[2]=10;
ds[3]=10;
}else{//正常顯示
ds[0]=countTemp/1000%10;
ds[1]=countTemp/100%10;
ds[2]=countTemp/10%10;
ds[3]=countTemp%10;
}
fmq=(countTemp==count?1:0);//蜂鳴器

if(readPIN(key_down,2)==1){//計入預置狀態
zt=1;
}
if(readPIN(key_down,3)==1){//計數
if(++countTemp>9999)countTemp=0;
}
}
/*****************************/
voidmain()//主函數
{
while(1){
if(zt==0){
fmq=0;
init();//系統初始化
TR0=1;//定時器開始計時
zt=1;
}elseif(zt==1){
yzzt();
}elseif(zt==2){
jszt();
}
scanKey();
}

}


/****************************/
voidtimer0()interrupt1//1ms定時器
{
TH0=(65536-1000)/256;//重載初值
TL0=(65536-1000)%256;
dispaly();//顯示
if(++jsflag>=1000)jsflag=0;
if(anjs!=0)anjs--;

}

⑶ 單片機作業 1.利用寄存器定址和寄存器間接定址把立即數85H送到RAM30H單元中。 2.把寄

我也是學生,1題寄存器定址
MOV R1,#85H
MOV 30H,R1
寄存器間接定址
MOV R1,#01H
MOV @R1,85H
MOV 30H,@R1
2題
MOV A,R0
MOV R1,A
4題B 5題C 7題 運算、控制 8題8位
其實我還是個渾水摸魚的啥都不懂!錯了別怪我哦。

⑷ 單片機大作業

單片機就是一個電腦,只不過是微型的,它內部也用和電腦功能類似的模塊,比如CPU,內存,並行匯流排,還有和硬碟作用相同的存儲器件,不同的是它的這些部件性能都相對我們的家用電腦弱很多,不過價錢也是低的,一般不超過10元即可......用它來做一些控制電器一類不是很復雜的工作足矣了。我們現在用的全自動滾筒洗衣機,排煙罩VCD等等的家電裡面都可以看到它的身影!......它主要是作為控制部分的核心部件。
它是一種在線式實時控制計算機,在線式就是現場控制,需要的是有較強的抗干擾能力,較低的成本,這也是和離線式計算機的(比如家用PC)的主要區別。

單片機是靠程序的,並且可以修改。通過不同的程序實現不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復雜的功能要是用美國50年代開發的74系列,或者60年代的CD4000系列這些純硬體來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機,結果就會有天壤之別!只因為單片機的通過你編寫的程序可以實現高智能,高效率,以及高可靠性!

由於單片機對成本是敏感的,所以目前占統治地位的軟體還是最低級匯編語言(近幾年,C語言也開始廣泛被應用),它是除了二進制機器碼以上最低級的語言了,既然這么低級為什麼還要用呢?很多高級的語言已經達到了可視化編程的水平為什麼不用呢?原因很簡單,就是單片機沒有家用計算機那樣的CPU,也沒有像硬碟那樣的海量存儲設備。一個可視化高級語言編寫的小程序裡面即使只有一個按鈕,也會達到幾十K的尺寸!對於家用PC的硬碟來講沒什麼,可是對於單片機來講是不能接受的。單片機在硬體資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計算機上的操作系統和應用軟體拿到家用PC上來運行,家用PC的也是承受不了的。

目前最常用的單片機為MCS-51,是由美國INTEL公司(生產CPU的英特爾)生產的,89C51是這幾年在我國非常流行的單片機,它是由美國ATMEL公司開發生產的,其內核兼容MCS-51單片機。

⑸ 單片機作業求大神解答!!!

單片微型計算機簡稱單片機,是典型的嵌入式微控制器(Microcontroller Unit), 常用英文字母的縮寫MCU表示單片機,單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。單片機由運算器,控制器,存儲器,輸入輸出設備構成,相當於一個微型的計算機(最小系統),和計算機相比,單片機缺少了外圍設備等。概括的講:一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。它最早是被用在工業控制領域。只能幫你到這了謝謝採納

⑹ 單片機作業

#include <reg51.h>
sbit light=P1^0;
sbit key=P1^7;
void cpl()
{
light=1;
light=0;
}
void main()
{
key=1;
light=0;
while(1)
{
if(key==0) cpl();
}
}

⑺ 單片機作業,請高手幫個忙,最好能說下程序流程(二選一用C51編程):

已經按你的要求完成這兩個設計,ProteUS模擬工程
115提取碼:bh0y2pc6, e6rebbbh

⑻ 單片機課程作業

他那個作業的方法的話,或者是單機片都是一樣的。

⑼ 單片機作業:用一片6264(RAM 8k*8)擴展數據存儲器,根據你的設計說出其地址范圍(畫圖)

如圖所示:地址范圍為:20000H~3FFFH(如果將CS接Vcc,地址可以為0000H~1FFFH)

⑽ 單片機作業題

#include<reg51.h>
bitflag;
uart()interrupt4
{
if(TI)TI=0;
flag=1;
}
main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x40;
ES=1;
EA=1;
while(1)
{
if(flag)
{
SBUF=P1;
flag=0;
}
}

閱讀全文

與單片機作業相關的資料

熱點內容
煙台編程積木教育環境好不好 瀏覽:214
python優秀代碼 瀏覽:620
androidtop命令 瀏覽:455
你平時怎麼排解壓力 瀏覽:68
表格中的文件夾怎樣設置 瀏覽:476
em78單片機 瀏覽:960
splitjava空格 瀏覽:248
電腦怎麼谷歌伺服器地址 瀏覽:515
nx自定義工具啟動宏命令 瀏覽:101
程序員怎麼解決無法訪問互聯網 瀏覽:303
java訪問本地文件 瀏覽:747
瓦斯琪伺服器怎麼用 瀏覽:22
安卓主題用什麼app 瀏覽:747
修改伺服器pci地址空間 瀏覽:321
程序員將來去哪裡 瀏覽:966
虛幻5創建c無法編譯 瀏覽:189
javaweb項目設計 瀏覽:407
國家反詐app緊急聯系人怎麼填 瀏覽:191
單片機旋轉led 瀏覽:340
杜洋單片機官網 瀏覽:467