完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
原本在89C52上能正常运行的CHAO SHENG BO测距程序放到12C5A60S2中就不能用了,考虑到单片机运行速度的不同相应的延时也作了相应的改动,可是一点反应没有;有哪位大神知道解决办法请帮一下忙。。。。。感激涕零!!!!!
|
|
相关推荐
7个回答
|
|
#include
#include //#include"CSB.H" ***it Tring=P0^6; ***it Echo=P0^7; void delay(uint z) //延时子函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /* 功能描述:1T单片机us级延时,2us~85us,精度1us */ void DelayUs1T(uchar delayUsVal) { while (--delayUsVal); } void CSB_init() { TMOD=0X10; TH1=0; TL1=0; EA=1; ET1=1; TR1=0; Tring=0; Echo=0; } void send_data() { Tring=1; // _nop_(); // _nop_(); // _nop_(); // _nop_(); // _nop_(); // _nop_(); // _nop_(); // _nop_(); // _nop_(); // _nop_(); // _nop_(); // _nop_(); DelayUs1T(40); Tring=0; } uint distance() { uint time; uint dis; // while(Echo==1); while(Echo==0); TR1=1; while(Echo==1); TR1=0; time=TH1*256+TL1; //us dis=(int)(time*1.7/100); //dis=(time/1000000)*340*100(cm) TH1=0; TL1=0; return dis; } void check() { if(Dis>=100) { P1=0X0F; } else if(Dis>=15) { P1=0X0F; } else if(Dis>0) { P1=0X0c; } } void main() { CSB_init(); P1=0; while(1) { send_data(); Dis=distance(); //厘米 delay(700); check(); } } |
|
|
|
STC12C5A60S2的定时器可以配置为12T或1T模式的,io口也是可以配置为4种模式的,可能是需要配置相应的寄存器吧
|
|
|
|
完全兼容8051的指令,也就是说你8952可以运行的,12系列完全可以。
|
|
|
|
楼上说得对
|
|
|
|
他和89c52是兼容的吧,定时器在不设置时应该是默认12T吧 |
|
|
|
嗯,是程序存在一些问题,现在已经改好了 ![]() |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
409 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
469 浏览 0 评论
697 浏览 0 评论
【xG24 Matter开发套件试用体验】power specification电源规格参数配置
512 浏览 0 评论
475 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10813 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-22 13:40 , Processed in 0.531637 second(s), Total 53, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191