找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3721|回復: 1
收起左側(cè)

怎樣讓每次發(fā)生低電平時計數(shù)器計數(shù),高點平時不計數(shù)呢?

[復制鏈接]
ID:67905 發(fā)表于 2014-10-25 15:13 | 顯示全部樓層 |閱讀模式
小車上方有寬窄不同的障礙物,要求小車數(shù)出寬的障礙物個數(shù)并顯示。怎樣讓每次發(fā)生低電平時計數(shù)器計數(shù),而恢復高點平時不計數(shù)呢?我的程序可以讓它在第一次低電平時開始計數(shù),但是當電平恢復高電平時還在計數(shù)停不下來。
#include<stc12c5a60s2.h>
#define uint unsigned int
#define uchar unsigned char
sbit  chuanganqi=P3^3;
sbit RS=P2^5;
sbit RW=P2^6;
sbit EP=P2^7;
unsigned int geshu,kuan,num;
void delay(int z)
{
  int i,j;
  for(i=z;i>0;i--)
    for(j=1000;j>0;j--);
}
void zhongduan1() interrupt 2   //外部中斷1
{
TR1=0;
Timer1_int();
  TR1=1;
}
void zhongduan2() interrupt 3        //定時器中斷1
{
    num++;
  TL1 = 0x9C;  //設置定時初值
TH1 = 0xFF;  //設置定時初值 //定時100us=0.1ms
}
void Timer1_int()  //定時器1初始化
{
/* TMOD|=0x10;
TH1=(65536-65436)/256;
TL1=(65536-65436)%256;   //定時100us=0.1ms
EA=1;
TR1=1;
ET1=1; */
AUXR &= 0xBF;  //定時器時鐘12T模式
TMOD &= 0x0F;  //設置定時器模式
TMOD |= 0x10;  //設置定時器模式
TL1 = 0x9C;  //設置定時初值
TH1 = 0xFF;  //設置定時初值
TF1 = 0;  //清除TF1標志  
// TR1 = 1;  //定時器1開始計時
ET1=1;
}
void write_com(char com) //輸入命令函數(shù)
{
RS=0;
RW=0;
EP=0;
P0=com;
delay(5);
EP=1;
delay(5);
EP=0;
}
void write_date(char date)//輸入數(shù)據(jù)函數(shù)
{
RS=1;
RW=0;
EP=0;
P0=date;
delay(5);
EP=1;
delay(5);
EP=0;
}
void write_init()//初始化函數(shù)
{
  write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void display()
{
write_com(0x80+0x00);
write_date(geshu/1000+0x30);
write_com(0x80+0x01);
write_date(geshu%1000/100+0x30);
write_com(0x80+0x02);
write_date(geshu%1000%100/10+0x30);
write_com(0x80+0x03);
write_date(geshu%10+0x30);
}
void main()
{
IT1=1;  //低電平觸發(fā)中斷
EX1=1;
write_init();
while(1)
{ EA=1;
Timer1_int();  
  if (num>=1000)
  {  
    kuan++;   // kuan/2是托盤個數(shù)
  num=0;
     TR1=0;
geshu=kuan/2;
}
    display();
// delay(5);
}
}
回復

使用道具 舉報

ID:67905 發(fā)表于 2014-10-25 16:19 | 顯示全部樓層
急死我了,有人知道嗎?
回復

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表