完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我这段程序是测速度和心率的,但是我现在烧进52后,在串口小程序里收不到数据,连0也没有,设置串口小程序显示16进制了,还是没有,求大神指点,是我哪里写错了,应该怎么改!谢谢
#include 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]++; } |
|
相关推荐
1个回答
|
|
把功能块单独测试吧,比如单纯的通过串口发送数据,来判断功能块是否正确
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
337 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
838 浏览 0 评论
2384 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2237 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1694 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5752 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 08:11 , Processed in 0.562367 second(s), Total 69, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号