|
1、基本內(nèi)容
IF (已經(jīng)準(zhǔn)備有protues仿真文件和HEX文件的)
(1)進(jìn)行仿真演示。
(1)認(rèn)真理解并讀懂程序,將所給程序在KEIL中編譯,產(chǎn)生HEX文件;
(2)將程序燒寫(xiě)到實(shí)驗(yàn)箱中的單片機(jī)中;
(3)連接實(shí)驗(yàn)箱中的硬件:
序號(hào) 單片機(jī)(A2區(qū)) LED燈(D1區(qū)) 備注
1 J61(P10~P17) J52(LED1~ LED8)
(4)運(yùn)行程序,在實(shí)驗(yàn)箱中實(shí)現(xiàn)程序功能。
2、擴(kuò)展內(nèi)容:
(1)所給程序中定時(shí)器T1采用查詢方式,請(qǐng)修改程序:用定時(shí)器T0,中斷方式,實(shí)現(xiàn)1S流水燈。
四、實(shí)驗(yàn)程序
//*********************************************************************************
//程序:ex4.c
//功能:查詢方式實(shí)現(xiàn)間隔1s的流水燈程序。8個(gè)發(fā)光二極管依次順序點(diǎn)亮,采用循環(huán)移位
//函數(shù)_crol_(m,1)實(shí)現(xiàn)
//實(shí)驗(yàn)箱上D1區(qū)J52接P1
//*********************************************************************************
#include<reg51.h> /*包含頭文件REG51.H*/
#include <intrins.h> /*包含函數(shù)_crol_(m,1)的頭文件*/
#define uchar unsigned char
#define LED P1 /*定義8個(gè)LED接至P1口*/
#define Count 50000 /* T1方式1定時(shí)50ms的計(jì)數(shù)值*/
uchar Temp1, Temp2;
void Delay1s(); //1s延時(shí)函數(shù)聲明
void main() //主程序
{
TMOD=0x10; //設(shè)置T1為定時(shí)器、方式1
LED=0xff; //8個(gè)LED全部熄滅
Temp1=0xfe; //點(diǎn)亮最上面的LED
LED=Temp1;
while(1)
{
Delay1s(); //調(diào)用1s延時(shí)函數(shù)
Temp2=_crol_(Temp1,1); //采用_crol_(m,1)實(shí)現(xiàn)單只LED從上到下依次點(diǎn)亮
Temp1=Temp2;
LED=Temp2;
}
}
//*********************************************************************************
//函數(shù)名:Delay1s
//函數(shù)功能:利用T1定時(shí)、方式1實(shí)現(xiàn)1s延時(shí),采用查詢方式實(shí)現(xiàn)
//*********************************************************************************
void Delay1s()
{
uchar i;
for(i=0;i<0x14;i++) //設(shè)置20次循環(huán)次數(shù)
{
TH1=(65536-Count)/256; //T1的高8位初值
TL1=(65536-Count)%256; //T1的低8位初值
TR1=1; //啟動(dòng)T1
while(!TF1); //查詢計(jì)數(shù)是否溢出,即定時(shí)50ms時(shí)間到了嗎?
TF1=0; //50ms定時(shí)時(shí)間到,將T1溢出標(biāo)志位TF1清零
}
}
1.仿真圖:
|
-
|