大家好,很抱歉昨天忘了發帖了,今天好好談談我的考核經歷吧。今天我們班進行了單片機上機考核,也算是一場小小的考試吧。其實我們今天的題目并不難,就是用單片機、8個LED和開關實現開關控制流水燈,和第一個單片機實驗內容差不多,多了一個開關控制。怎么說呢,老師要求我們用實驗室的電腦,考核時間不能看書,不能看手機和其他一切資料。原理圖我是很快就連接完成了,然后在keil里面寫源程序,我犯的錯誤比較多,首先忘了循環左移右移函數的頭文件和表示方式,然后用數組時數組名用code出錯,最后最最最令人頭疼的是開關判斷,if語句中沒有用==。下面我把我當時寫的程序和原理圖再現一遍吧!
捕獲.PNG (60.54 KB, 下載次數: 28)
下載附件
2020-11-27 23:32 上傳
單片機源程序如下:
#include "reg51.h"
#include //當時想到的移位函數頭文件是這個
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit s=P3^7;
void delay(uint i)
{
uchar t;
while(i--)
{
for(t=0;t<120;t++);
}
}
void main() //第二種方法
{
uchar r;
uint buf[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //當時數組名用的code,不能運行,后來改的buf
if(s==1) //判斷開關是否閉合,當時寫的是if(s=1),一直顯示error,大家一定要記住哦,重點
{
P2=0xff;
}
else
while(1)
{
for(r=0;r<8;r++)
{
P2=buf[r];
delay(500);
}
}
}
/*
void main () //第一種方法,剛剛運行了,不能用
{
if(s==1)
{
P2=0xff;
}
else
while(1)
{
P2=0xfe;
P2=_crol_(P2,1);
delay(500);
}
}
*/
|