亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
單片機按鍵控制流水燈狀態(4種),仿真加程序,按鍵采用中斷掃描方式
[打印本頁]
作者:
詳細信息
時間:
2020-5-15 22:32
標題:
單片機按鍵控制流水燈狀態(4種),仿真加程序,按鍵采用中斷掃描方式
按鍵-LED實驗
實現現象:下載程序后
按下K1按鍵 12,34 交替亮滅
按下K2按鍵 13,24 交替亮滅
按下K3按鍵 1234循環點亮
按下K4按鍵 全滅
在本次仿真中,按鍵使用的是定時器0的按鍵掃描方式,
但是由于單片機的執行是從上往下執行的過程,加上程序中有延時函數的存在,
因此,有時候在當前狀態未運行完的情況下,按下按鍵并沒有立即反應,
等當前狀態執行完就可以執行按鍵按下后的狀態了。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1.png
(90.49 KB, 下載次數: 81)
下載附件
仿真
2020-5-15 22:30 上傳
2.png
(262.36 KB, 下載次數: 78)
下載附件
代碼
2020-5-15 22:30 上傳
單片機源程序如下:
/**************************************************************************************
* *按鍵-LED實驗 *
*實現現象:下載程序后
*按下K1按鍵 12,34 交替亮滅
*按下K2按鍵 13,24 交替亮滅
*按下K3按鍵 1234循環點亮
*按下K4按鍵 全滅
注意事項:無
***************************************************************************************/
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
#include<intrins.h> //因為要用到左右移函數,所以加入這個頭文件
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit k1=P1^0; //按鍵1, 12,34 交替亮滅
sbit k2=P1^1; //按鍵2, 13,24 交替亮滅
sbit k3=P1^2; //按鍵3, 1234循環點亮
sbit k4=P1^3; //全滅
sbit LED1=P2^0; //定義P20口是led1
sbit LED2=P2^1; //定義P20口是led2
sbit LED3=P2^2; //定義P口是led3
sbit LED4=P2^3; //定義P口是led4
#define led P2 //將P2口定義為led 后面就可以使用led代替P2口
u8 key_value;
/*******************************************************************************
* 函 數 名 : delay
* 函數功能 : 延時函數,i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
void Delay100ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 5;
j = 144;
k = 71;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
/*******************************************************************************
* 函 數 名 : Timer0Init
* 函數功能 : 定時器0初始化
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Timer0Init(void) //10微秒@12.000MHz
{
TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TL0 = 0x88; //設置定時初值
TH0 = 0xFF; //設置定時初值
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
}
/*******************************************************************************
* 函 數 名 : keypros
* 函數功能 : 按鍵處理函數,判斷按鍵是否按下
*******************************************************************************/
void keypros()
{
if(k1==0) //檢測按鍵K1是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k1==0) //再次判斷按鍵是否按下
{
key_value = 1;
}
while(!k1); //檢測按鍵是否松開
}
if(k2==0) //檢測按鍵K1是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k2==0) //再次判斷按鍵是否按下
{
key_value = 2;
}
while(!k2); //檢測按鍵是否松開
}
if(k3==0) //檢測按鍵K1是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k3==0) //再次判斷按鍵是否按下
{
key_value = 3;
}
while(!k3); //檢測按鍵是否松開
}
if(k4==0) //檢測按鍵K1是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k4==0) //再次判斷按鍵是否按下
{
key_value = 4;
}
while(!k4); //檢測按鍵是否松開
}
}
void Mode1() //模式1
{
LED1 = 0; //亮
LED2 = 0; //亮
LED3 = 1; //滅
LED4 = 1; //滅
Delay100ms();
LED1 = 1; //滅
LED2 = 1; //滅
LED3 = 0; //亮
LED4 = 0; //亮
Delay100ms();
}
void Mode2() //模式2
{
LED1 = 0; //亮
LED3 = 0; //亮
LED2 = 1; //滅
LED4 = 1; //滅
Delay100ms();
LED1 = 1; //滅
LED3 = 1; //滅
LED2 = 0; //亮
LED4 = 0; //亮
Delay100ms();
}
void Mode3() //模式3
{
u8 i;
led=0xfe;
Delay100ms();
for(i=0;i<3;i++) //將led左移一位
{
led=_crol_(led,1);
Delay100ms();
}
for(i=0;i<3;i++) //將led右移一位
{
led=_cror_(led,1);
Delay100ms();
}
}
void Mode4() //模式4
{
led=0xff; //全滅
}
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
Timer0Init(); //定時器0初始化
while(1)
{
keypros(); //按鍵處理函數
switch (key_value)
{
case 1 : Mode1();break;
case 2 : Mode2();break;
case 3 : Mode3();break;
case 4 : Mode4();break;
}
}
}
/*******************************************************************************
* 函 數 名 : void Timer0() interrupt 1
* 函數功能 : 定時器0中斷函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Timer0() interrupt 1
{
TL0 = 0x88; //設置定時初值
TH0 = 0xFF; //設置定時初值
keypros();
}
復制代碼
所有資料51hei提供下載:
仿真.rar
(50.96 KB, 下載次數: 51)
2020-5-15 22:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
code.rar
(27.59 KB, 下載次數: 44)
2020-5-15 22:31 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
12347UU
時間:
2021-12-9 10:27
第二個是啥
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1