完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include"reg52.h"
#define u unsigned int #define uchar unsigned char uchar code table0[]="距离是:"; uchar code table[]="0123456789"; u s,time; uchar bai,shi,ge,qian; ***it trig=P2^1; ***it echo=P2^2; ***it en=P3^4; ***it rs=P3^5; ***it rw=P3^6; ***it p***=P3^7; void delay(u x) { u y,z; for(y=x;y>0;y--) for(z=110;z>0;z--); } void mai() { trig=0; delay(1); trig=1; delay(1); trig=0; } void wrcom(uchar com) { rs=0; rw=0; 0=com; delay(1); en=1; delay(1); en=0; } void wrdat(uchar dat) { rs=1; rw=0; 0=dat; delay(1); en=1; delay(1); en=0; } void init() { EA=1; TMOD=0x01; ET0=1; TH0=0; TL0=0; p***=1; wrcom(0x38); wrcom(0x0c); wrcom(0x01); } void dis0() { uchar i; wrcom(0x80); for(i=0;i<8;i++) { wrdat(table0); delay(1); } wrcom(0x86); wrdat('c'); wrdat('m'); } void dis() { wrcom(0x84); wrdat(table[qian]); wrdat(table[bai]); wrdat(table[shi]); wrdat(table[ge]); } void jisuan() { time=TH0*256+TL0; s=time*1.87/100+1; TH0=0; TL0=0; if(s>9999) { uchar i; wrcom(0x86); for(i=0;i<4;i++) { wrdat('-'); } } else { qian=s/1000; bai=s%1000/100; shi=s%100/10; ge=s%10; } } void main() { init(); dis0(); while(1) { mai(); while(!echo); TR0=1; while(echo); TR0=0; jisuan(); dis(); delay(1000); } } void timer0() interrupt 1 { TH0=0; TL0=0; } 在测距时,显示的数字总是卡死 |
|
相关推荐
5个回答
|
|
|
|
|
|
小弟觉得应该是程序出问题了,可是就是检查不出哪里出错,有时候程序可以执行,但是一变换距离就卡了
|
|
|
|
我也觉得是程序有问题。
|
|
|
|
肯定是程序有问题吗嘛~
|
|
|
|
谢谢大侠们,问题解决
|
|
|
|
只有小组成员才能发言,加入小组>>
3284 浏览 9 评论
2960 浏览 16 评论
3464 浏览 1 评论
9008 浏览 16 评论
4054 浏览 18 评论
1127浏览 3评论
579浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
573浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2306浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1864浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 09:52 , Processed in 1.102028 second(s), Total 55, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号