久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機單計時器 調做時鐘,求給個思路
[打印本頁]
作者:
zzffw
時間:
2018-7-6 17:44
標題:
單片機單計時器 調做時鐘,求給個思路
#include "BS87D20A-3.h"
#define com1 _pc1
#define com2 _pc0
#define com3 _pc2
#define com4 _pc3
#define key1 _pd2
#define key2 _pd3
#define key3 _pa1
#define key4 _pa4
volatile bit Flag_T1ms;
volatile bit Flag_T5ms;
volatile bit flag_keylong;
volatile bit flag_keyshort;
const unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char strtab[3];//緩沖區
unsigned char key_number=0;
unsigned char sec=0,min=0,hour=0;
unsigned char temp;
unsigned long s; //秒級
unsigned long ms5;
unsigned char keyvalue;
void read_key()
{
static char key_state=0x00,press_20ms;
unsigned char keybak;
keybak=0;
if(!key1)keybak|=0x01;
if(!key2)keybak|=0x02;
if(!key3)keybak|=0x04;
if(!key4)keybak|=0x08;
switch (key_state)
{
case 0x00: // 按鍵初始態
if (keybak!=0)
{
press_20ms=0;
key_state=0x01; // 鍵被按下,狀態轉換到鍵確認態
}
break;
case 0x01: // 按鍵確認態
if (keybak!=0)
{
if(++press_20ms>3)
{
key_state=0x02;
press_20ms=0;
keyvalue=keybak;
}
}
else
{
key_state=0x00;
}
break;
case 0x02:
if (keybak==0)
{
flag_keyshort=1;
}
else if(++press_20ms>100)
{
flag_keylong=1;
}
case 0x04:
if(keybak==0)
{
if(++press_20ms>3)
{
key_state=0x00;
}
}
else
{
press_20ms=0;
}
break;
default:
break;
}
}
void key_do()
{
if(flag_keyshort)
{
switch(keyvalue)
{
case 0x01:
break;
case 0x02:
break;
case 0x04:
break;
case 0x08:
break;
default:
break;
}
flag_keyshort=0;
}
}
void displaypro()
{
strtab[0]=tab[sec%10];
strtab[1]=tab[sec/10];
strtab[2]=tab[min%10];
strtab[3]=tab[min/10];
}
void display_drive()
{
com1=1;com2=1;com3=1;com4=1;
switch(temp)
{
case 0:com4=0;
_pb=strtab[temp]; break;
case 1:com3=0;
_pb=strtab[temp]; break;
case 2:com2=0;
_pb=strtab[temp]; break;
case 3:com1=0;
_pb=strtab[temp]; break;
default:break;
}
temp++;
if(temp==4)
temp=0;
}
void init()
{
_ctm0c0=0x20; // fh/16 2us
_ctm0c1=0xc1; // 定時/計數器模式 比較器a ctm0
_ctm0al=0xf4; // 1ms
_ctm0ah=0x01;
_ctm1c0=0x20; // fh/16 2us
_ctm1c1=0xc1; // 定時/計數器模式 比較器a ctm1
_ctm1al=0xf4; // 1ms
_ctm1ah=0x01;
_pbc=0; //輸出
_pcc0=0;
_pcc1=0;
_pcc2=0;
_pcc3=0;
_pac1=1;
_pac4=1;
_pdc2=1;
_pdc3=1;
_pdpu3=1;
_pdpu2=1;
_papu1=1;
_papu4=1;
s=1000;
ms5=5;
temp=0;
_mfe=1; //開多功能中斷
_ctm1ae=1;
_ctm0ae=1; //CTM a中斷使能
_emi=1; //開總中斷
_ct0on=1; //開定時器0
_ct1on=1;
}
void main()
{
init();
while(1)
{
if(Flag_T5ms)
{
Flag_T5ms=0;
read_key();
displaypro();
}
GCC_CLRWDT();
}
}
void __attribute__((interrupt(0x20))) ISR_CTM1(void)
{
_ctm1af=0;
ms5--;
if(!ms5)
{
ms5=5;
Flag_T5ms=1;
}
display_drive();
s--;
if(! s)
{
s=1000;//1s電子鐘計數
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
void __attribute__((interrupt(0x14))) ISR_CTMO(void)
{
_ctm0af=0;
}
復制代碼
作者:
zl2168
時間:
2018-7-7 15:34
本帖最后由 zl2168 于 2018-7-7 15:35 編輯
給你介紹一個正確有效看得懂的參考案例,自己對照查錯吧!
實例
94
模擬電子鐘(由
80C51
定時器產生秒時基)
先
Proteus
仿真一下,
確認有效。
實例94 模擬電子鐘(由80C51定時器產生秒時基).rar
(43.05 KB, 下載次數: 4)
2018-7-7 15:35 上傳
點擊文件名下載附件
模擬電子鐘.jpg
(306.12 KB, 下載次數: 40)
下載附件
2018-7-7 15:35 上傳
以上摘自張志良編著《
80C51
單片機仿真設計實例教程
——
基于
Keil C
和
Proteus
》清華大學出版社
ISBN 978-7-302-41682-1
,
內有常用的單片機應用
100
案例,用于仿真實驗操作,
電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧产日产国产精品v
|
日韩欧美高清
|
天堂素人约啪
|
亚洲免费一区二区
|
在线免费观看a级片
|
欧美一级片在线观看
|
成人在线中文
|
亚洲国产精品人人爽夜夜爽
|
色综合99
|
国产一区二区三区在线
|
亚洲视频在线观看免费
|
亚洲一区二区三区
|
午夜影院在线播放
|
蜜桃视频在线观看www社区
|
亚洲国产成人精品女人久久久
|
91国在线观看
|
亚洲精品无
|
中文字幕 在线观看
|
亚洲精久久久
|
91在线播
|
狠狠操电影
|
久久久亚洲综合
|
日日日色
|
精品一区国产
|
国产98色在线 | 日韩
|
午夜一区
|
亚洲成人福利视频
|
亚洲一区二区在线播放
|
日韩影院一区
|
中文在线亚洲
|
色视频在线播放
|
亚洲精品一区二区三区
|
一区二区三区国产精品
|
久热精品在线播放
|
欧美视频三区
|
久久中文字幕一区
|
男人的天堂视频网站
|
黄色片在线看
|
爱爱视频日本
|
欧美日韩视频一区二区
|
亚洲444kkkk在线观看最新
|