欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
求大神幫忙看一段程序!單片機測速度和心率的
[打印本頁]
作者:
lixin201413
時間:
2017-6-22 10:07
標題:
求大神幫忙看一段程序!單片機測速度和心率的
我這段程序是測速度和心率的,但是我現在燒進52后,在串口小程序里收不到數據,連0也沒有,設置串口小程序顯示16進制了,還是沒有,求大神指點,是我哪里寫錯了,應該怎么改!謝謝
#include <reg52.h>
unsigned char flag_d = 0; //發送標志
unsigned char time = 0; /
unsigned int heart = 0; //心率變量
unsigned int num[2] = {0,0}; //
unsigned int speed = 0;
float temp;
float count = 0; //間隔時間
//發送字符
void UART_SChar(unsigned char ch)
{
SBUF = ch; //發送數據
while(TI == 0); //等待發送完成
TI = 0; //清楚發送標志
}
void main(void)
{
TMOD = 0x21; //定時器工作方式
SCON = 0X40; //串口工作方式
TH0 = (65536-45872)/256; //定時器0初值
TL0 = (65536-45872)%256;
TH1 = 0XFD; //定時器1初值
TL1 = 0XFD;
IT0 = 0; //外部中斷0低電平觸發速度
IT1 = 1; //下降沿觸發心率
EA = 1; //開中斷
ES = 1; //開串行口中斷
EX0 = 1; //開外部0中斷
EX1 = 1; //開外部1中斷
ET0 = 1; //開定時器0中斷
ET1 = 1;
TR0 = 1;
TR1 = 1; //啟動定時器1
while(1)
{
if(flag_d != 0) //如果發送標志位有效
{
UART_SChar(0x00); //發送數據
UART_SChar(speed); //發送數據
UART_SChar(0xff); //發送數據
if(flag_d == 2)
{
UART_SChar(0x00); //發送數據
UART_SChar(heart); //發送數據
UART_SChar(0xff); //發送數據
}
}
flag_d = 0; //清除標志
}
}
//T0中斷服務程序
void T0_ISR(void) interrupt 1 //
{
TH0 = (65536-45872)/256;
TL0 = (65536-45872)%256;
speed = num[0];
num[0] = 0 ;
flag_d = 1 ;
if (time == 40)
{
heart = num[1];
num[1] = 0 ;
flag_d = 2 ;
time = 0 ;
}
time++;
}
void INT0_ISR(void) interrupt 0
{
num[0]++;
}
//外部中斷1服務程序
void INT1_ISR(void) interrupt 2 //
{
num[1]++;
}
作者:
cjjcjj1
時間:
2017-6-22 10:49
提示:
作者被禁止或刪除 內容自動屏蔽
作者:
lixin201413
時間:
2017-6-22 10:52
cjjcjj1 發表于 2017-6-22 10:49
if(flag_d != 0) 那就是發送標志位一直處于無效狀態
不是啊 if(flag_d != 0)的意思不是判斷flag_d 等不等于0嗎?為啥是移植處于無效?
作者:
lixin201413
時間:
2017-6-22 11:05
cjjcjj1 發表于 2017-6-22 10:49
if(flag_d != 0) 那就是發送標志位一直處于無效狀態
if(flag_d != 0) 這不是判斷flag_d等不等于0嗎?為啥是無效呢
作者:
lixin201413
時間:
2017-6-22 11:05
為啥是無效呢?這個不是判斷標志位是不是0嗎?
作者:
team3dso
時間:
2017-6-22 11:15
while(TI == 0);
這個TI有定義的地方嗎
作者:
騰飛的龍
時間:
2017-6-22 15:23
void init() { TMOD=0x20; //TMOD=0010 0000B,定時器T1工作于方式2 SCON=0x50; //SCON=0101 0000B,串口工作方式1 1起始位8數據位1停止位 PCON=0x00; //PCON=0000 0000B,波特率9600 晶振11.0592 TH1=0xfd; //根據規定給定時器T1賦初值 TL1=0xfd; //根據規定給定時器T1賦初值 TR1=1; //啟動定時器T1 }
作者:
cjjcjj1
時間:
2017-6-22 15:53
提示:
作者被禁止或刪除 內容自動屏蔽
作者:
1114207952
時間:
2017-6-22 16:09
不清楚_(:з」∠)_
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1