找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7504|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)用定時(shí)器中斷來掃描數(shù)碼管

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80436 發(fā)表于 2015-5-22 00:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
uchar num,num1;t;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void main()
{
num=0;
t=0;
        TMOD=0X01;//設(shè)置定時(shí)器工作方式為1TH0=(65536-5000)/256;//高八位 定時(shí)器裝初值TL0=(65536-5000)%256;//低八位 定時(shí)器裝初值、、50毫秒ET0=1;//開定時(shí)器0中斷TR0=1;//啟動定時(shí)器0EA=1;//總中斷打開EX0=1;//外部中斷打開
//EA=1;//開總中斷
ET0=1;//開定時(shí)器0中斷
ET1=1;
TR0=1;//啟動定時(shí)器0
TR1=1;
P2=0xfe;
while(1)
{
if(t==100)
   {
t=0;
num++;

P0=table[num];//此處有問題。num自增到10后會出現(xiàn)亂碼。數(shù)組越界了
}
}
}


void time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
t++;
}
次數(shù)X機(jī)器周期Tcy=時(shí)間T,50*(1/12)*12=50(ms)、一次中斷為50毫秒。中斷二十次就是一秒了。
機(jī)器周期=1/12  即12分之1的震蕩周期。振蕩周期取決于你用的是多少M(fèi)的晶振,我用的是12M,越來越覺的STC的51單片機(jī)很水,性能很水,穩(wěn)定性也很水、工業(yè)用不合適,業(yè)余玩玩可以,便宜!難怪很多人做產(chǎn)品時(shí)寧愿用Atmel的單片機(jī)了。
利用中斷20次來實(shí)現(xiàn)1秒鐘的精確延時(shí),比用delay函數(shù)當(dāng)然更精確地的啦,最多就相差1微秒。一個(gè)機(jī)器周期的樣子,在這鄙視下PLC的速度,呵呵,單片機(jī)的機(jī)器周期是1微秒級的,PLC機(jī)器周期是數(shù)十微秒。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表