当前位置:编程学习 > 汇编语言 >>

单片机定时器控制频率计,并进行功能扩展。(不要汇编语言,附带ISIS 7 Professional仿真图、程序)

要求:1使用单片机的定时器的计数功能测量TTL矩形方波的频率。2测量频率范围为(0~200k),精度达到0.5%以内。
追问:有proteus仿真图么?
答案:Public Sub EnterTAB(KeyAscii As Integer)
  If KeyAscii = 13 Then '13表示回车键
     SendKeys "{TAB}"    '转换为TAB键
  End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
             If KeyAscii = 13 Then
                EnterTAB (KeyAscii)
             End If
End Sub
其他:#include "reg51.h"
#define uchar unsigned char
uchar disp[8]={0,0,0,0,0,0,0,0};
uchar T0count,T1count;


void delay(void)
{
 uchar i;
 for(i=250;i>0;i--);
}


void display()
{
   //uchar i,j,k=0x80;
   uchar dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
   uchar i,k;
  k=0x80;
  for(i=0;i<8;i++)
  {
  P2=0;
  P0=dispcode[disp[i]];
  P0=~P0;
  P2=k;
  k=k>>1;
  delay();
  }
  P2=0;

 }

 void calc()
 {
   uchar i;
   long frequency;
   frequency=(T0count*256+TH0)*256+TL0;
   for(i=7;i>0;i--)
     {
	  disp[i]=frequency%10;
	  frequency=frequency/10;
	 }
   disp[0]=frequency;
 }

void init()
{
  T0count=0;
  T1count=0;
  TH0=0;
  TL0=0;
}


void main()
{
  init();
  TMOD=0x15;
  TH1=(65536-5*110592/12)/256;
  TL1=(65536-5*110592/12)/256%10;
  ET1=1;
  ET0=1;
  EA=1;
  TR1=1;
  TR0=1;

 //以下四句的作用是在P1.0引脚上形成1000Hz的脉冲,用导线连接到P3.4作为测试用,如果是AT89S51,则四句不用。将其中
 //高8位和低8位的初始值更改后可输出不同频率的脉冲。
 /* 
  T2MOD=0x2;
  RCAP2H=245;
  RCAP2L=74;
  TR2=1;
  */

  while(1)
  {
    display();
  }
}

void time0() interrupt 1
{
  T0count++;
}

void time1() interrupt 3
{
  TH1=(65536-5*110592/12)/256;
  TL1=(65536-5*110592/12)/256%10;

  if(T1count==19)
  {
   calc();
   init();
  }
  else T1count++;
}

上一个:单片机汇编语言问题
下一个:可以帮我把c语言翻译成单片机汇编语言吗

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,