1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
單片機兩個定時器是需要兩個外部中斷嗎?
[打印本頁]
作者:
弓長張
時間:
2018-7-19 12:21
標題:
單片機兩個定時器是需要兩個外部中斷嗎?
我現在做的是使用兩個傳感器 一個超聲波 一個PH 程序里用到了定時器0 和定時器1 兩個傳感器給的參考例程用的都是定時器0和外部中斷0,然后我就把超聲波的定時器改成了 定時器1 外部中斷1
兩個用的都是TMOD=0X01;
我改成了 TMOD=0X11;
這是PH參考程序利用到的外部中斷
void timer0( ) interrupt 1 //定時器0工作方式1
{
TH0=(65536-2)/256; //重裝計數初值
TL0=(65536-2)%256; //重裝計數初值
CLK=!CLK; //取反
}
/*************************************************************************
主函數
**************************************************************************/
void main()
{
TMOD=0X01; //定時器中斷0
CLK=0; //脈沖信號初始值為0
TH0=(65536-2)/256; //定時時間高八位初值
TL0=(65536-2)%256; //定時時間低八位初值
EA=1; //開CPU中斷
ET0=1; //開T/C0中斷
TR0=1;
while(1) //無限循環
{
ST=0; //使采集信號為低
ST=1; //開始數據轉換
ST=0; //停止數據轉換
while(!EOC); //等待數據轉換完畢
OE=1; //允許數據輸出信號
AD0809=P1; //讀取數據
OE=0; //關閉數據輸出允許信號
if(AD0809>=251) //電壓顯示不能超過5V
AD0809=250;
date=AD0809*20; //數碼管顯示的數據值,其中20為采集數據的毫安值
xianshi(); //數碼管顯示函數
}
}
這是超聲波里用到的
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=time*1.87/100;
void main(void)
{
TMOD=0x01; //設T0為方式1,GATE=1
TH0=0;
TL0=0;
TR0=1;
Lcd_init(); //設置液晶顯示器
Clr_Scr(); //清屏
Disp_img(logo); //顯示歡迎使用本產品LOGO
Delaynms(12000);
Lcd_init(); //從圖形顯示狀態下返回
Lcd_Mark2();
while(1)
{
StartModule();
//計算
while(!RX); //當RX為零時等待
TR0=1; //開啟計數
while(RX); //當RX為1計數并等待
TR0=0; //關閉計數
Conut();
delayms(1200); //80MS
這是我把他兩個揉起來的
void main(void)
{
TMOD=0x11; //設T0為方式1,GATE=1
TH1=0;
TL1=0;
TR1=1;
CLK=0; //脈沖信號初始值為0
TH0=(65536-2)/256; //定時時間高八位初值
TL0=(65536-2)%256; //定時時間低八位初值
EA=1; //開CPU中斷
ET0=1; //開T/C0中斷
TR0=1;
Lcd_init();
Lcd_Mark2();
Lcd_Mark3();
while(1)
{
StartModule();
//計算
while(!RX); //當RX為零時等待
TR1=1; //開啟計數
while(RX); //當RX為1計數并等待
TR1=0; //關閉計數
Conut();
delayms(80); //80MS
ST=0; //使采集信號為低
ST=1; //開始數據轉換
ST=0; //停止數據轉換
while(!EOC); //等待數據轉換完畢
OE=1; //允許數據輸出信號
AD0809=P1; //讀取數據
OE=0; //關閉數據輸出允許信號
if(AD0809>=251) //電壓顯示不能超過5V
AD0809=250;
date=AD0809*20; //顯示的數據值,其中20為采集數據的毫安值
xianshi(); //顯示函數
}
}
/*************************************************************************
CLK振蕩信號
**************************************************************************/
void timer0( ) interrupt 1 //定時器0工作方式1
{
TH0=(65536-2)/256; //重裝計數初值
TL0=(65536-2)%256; //重裝計數初值
CLK=!CLK; //取反
}
還請大佬看看哪里出了問題 我現在如果只用超聲波的話 程序可以 如果把PH的東西都插上 數據就不能實時顯示 只能通電的一瞬間顯示然后數據就定住了
作者:
devcang
時間:
2018-7-19 15:24
時鐘不需要外部中斷,有時鐘中斷。
~~~~~~~~~~~~~~~~~
程序,根據邏輯融合起來,而不是生搬硬套拷貝到一起。
~~~~~~~~~~~~~~
作者:
huaxinnan
時間:
2018-7-19 15:50
可以一個中斷里面執行兩個動作,如果你需要使用兩個中斷 那你的程序里面就需要兩個中斷。
作者:
LIUJISHAN
時間:
2018-7-19 16:27
時鐘有時鐘中斷的、
作者:
CY1994
時間:
2018-7-19 17:22
首先定時器1的中斷沒有開啟,其次程序的邏輯也要注意,特別是中斷優先級等等
作者:
792544979
時間:
2018-7-19 19:13
定時器不需要外部中斷,內部中斷就可以
作者:
天高我更高
時間:
2018-7-20 10:26
定時器是定時器的兩個寄存器溢出中斷,外部中斷是外部中斷
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1