久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3935|回復: 3
打印 上一主題 下一主題
收起左側

這是超聲波測距的程序,在初始化定時器里為什么要清零啊

[復制鏈接]
跳轉到指定樓層
樓主
ID:139175 發表于 2016-10-27 21:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

#include <STC89C5xRC.H>
#define uint unsigned int//宏定義unsigned int
#define uchar unsigned char//宏定義unsigned char
sbit echo=P3^2;//接收
sbit trig=P3^3;//發送
sbit led=P1^0;//蜂鳴器
sbit bw=P2^0;//百位
sbit sw=P2^1;//十位
sbit gw=P2^2;//個位
sbit sfw=P2^3;//十分位
uint timeh,timel,distance,time;
uchar bai,shi,ge,shifen;
bit flag;
uchar code list[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極數碼管不帶小數點代碼數組
uchar code listtwo[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//共陽極數碼管帶小數點代碼數組
void delay(uint z)//延時z毫秒函數
{
uint x,y;
for(x=z;x>0;x--)
  for(y=123;y>0;y--);
}
void delay20us()//延時20微秒函數
{
uchar a;
for(a=7;a>0;a--);
}
void ini()//初始化函數
{
TMOD=0x01;//設置定時器0為16位定時器/計數器
TH0=0;//定時器0高8位清0
TL0=0;//定時器0低8位清0    65536   0.65s
flag=0;//中斷標志位置0
trig=0;//trig信號置0
EA=0;//關閉總中斷
ET0=0;//關閉定時器0中斷
EX0=0;//關閉外部中斷0中斷
}
void display(distance)//顯示函數
{
bai=distance/1000;//分離百位
shi=distance%1000/100;//分離十位
ge=distance%100/10;//分離個位
shifen=distance%10;//分離十分位
P0=list[bai];//發送百位代碼
bw=0;//顯示百位
delay(1);//延時1毫秒
bw=1;//消隱百位
P0=list[shi];//發送十位代碼
sw=0;//顯示十位
delay(1);//延時1毫秒
sw=1;//消隱十位
P0=listtwo[ge];//發送個位代碼
gw=0;//顯示個位
delay(1);//延時1毫秒
gw=1;//消隱個位
P0=list[shifen];//發送十分位代碼
sfw=0;//顯示十分位
delay(1);//延時1毫秒
sfw=1;//消隱十分位
}   
void main()//主函數
{
ini();//調用初始化函數  初始化定時器,關中斷
while(1)//無限循環
{
  uchar i;
  echo=1;//接收端置1,準備接收echo信號
  trig=1;//發送trig信號
  delay20us();//延時20微秒
  trig=0;//發送trig信號完畢
  while(echo==0);//等待接收echo信號,如接收到echo信號則繼續執行    為假則跳出while語句
  flag=0;//中斷標志位置0
  TH0=0;//定時器0高8位清0
  TL0=0;//定時器0低8位清0
  EA=1;//打開總中斷
  EX0=1;//打開外部中斷0
  TR0=1;//打開定時器0
  for(i=1000;i>0;i--)//循環顯示100次
  {
   display(distance);//調用顯示函數
  }
  EA=0;//關閉總中斷
  EX0=0;//關閉外部中斷0中斷
  TR0=0;//關閉定時器0
  if(flag==1)//如果進入中斷
  {
   time=timeh*256+timel;//計算時間
   distance=time*0.172;//計算測定距離
  }
  else//否則
  {
   distance=0;//距離為0
  }
   if(distance<200)
   {
     led=0;
   }
   else
   {
     led=1;
   }
}
}
void ex0() interrupt 0//外部中斷0中斷函數
{
timeh=TH0;//把定時器0高8位裝入timeh
timel=TL0;//把定時器0低8位裝入timel
flag=1;//中斷標志位置1
EX0=0;//關閉外部中斷0中斷
TR0=0;//關閉定時器0
}  




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

使用道具 舉報

沙發
ID:138155 發表于 2016-10-28 09:22 | 只看該作者

回帖獎勵 +1

當然要清零了上電初始化 各寄存器 定時器都先清零 再初始賦值
回復

使用道具 舉報

板凳
ID:144730 發表于 2016-10-28 09:35 | 只看該作者
不清零的話程序運行的時候可能會出錯,為的是提高程序的可靠性
回復

使用道具 舉報

地板
ID:144880 發表于 2016-10-28 10:28 | 只看該作者
學習編程好學嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区三区精品 | 7799精品视频天天看 | 精品综合| 欧美日韩在线视频一区二区 | 成人精品一区二区 | 成人影院在线视频 | 97伦理最新伦理 | 中文字幕在线免费视频 | 久久久性色精品国产免费观看 | 丁香色婷婷| 国产成人在线视频 | 婷婷久久五月 | 欧美日韩精品久久久免费观看 | 色爽女 | 国产丝袜一区二区三区免费视频 | 欧美成视频 | 欧美一级在线观看 | 91大片| 午夜精品久久久久久久99黑人 | www中文字幕 | 久久y| 久久综合亚洲 | 日韩中文一区 | 国产精品一级 | 欧美不卡一区二区三区 | 91成人在线视频 | 日韩免费视频一区二区 | 国产高清视频一区 | 亚洲一区国产 | 夜夜爽99久久国产综合精品女不卡 | 国产一区中文字幕 | 亚洲一区 | 日本欧美国产 | 日韩视频精品在线 | 欧美日韩在线一区二区 | .国产精品成人自产拍在线观看6 | 国产精品区二区三区日本 | 99久久99| 天天爱天天操 | 久久久久久久国产精品视频 | 我我色综合 |