完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这是低电平触发的测时器程序,求高手将其改成双中断口的,int0为开始计数,int1结束计数,计算速度并显示。急用,
#include #define uint unsigned int #define uchar unsigned char uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x3f}; uchar num=0,m=0,flag=0; long uint v=0,vg=0,vs=0,vb=0,vq=0,vw=0,vsw=0; ***it a3=P2^2; ***it a4=P2^3; ***it a5=P2^4; ***it a6=P2^5; void ds_10ms() interrupt 1 { TH0=(65535-10000)/256; TL0=(65535-10000)%256; num++; if(num==100) { num=0; m++; } } void key() interrupt 0 { TR0=~TR0; flag=~flag; } void delay(uchar k) { uchar i; while(k--) for(i=0;i<110;i++); } void display() { a3=1;P0=table[vq];delay(1);a3=0;P0=0xff; a4=1;P0=table[vb]&~0x80;delay(1);a4=0;P0=0xff; a5=1;P0=table[vs];delay(1);a5=0;P0=0xff; a6=1;P0=table[vg];delay(1);a6=0;P0=0xff; } void display1() { a3=1;P0=table[m%100/10];delay(1);a3=0;P0=0xff; a4=1;P0=table[m%10]&~0x80;delay(1);a4=0;P0=0xff; a5=1;P0=table[num/10];delay(1);a5=0;P0=0xff; a6=1;P0=table[num%10];delay(1);a6=0;P0=0xff; } void init() { TMOD=0x01; TH0=(65535-10000)/256; TL0=(65535-10000)%256; EA=1; EX0=1; IT0=1; ET0=1; } void main() { init(); while(1) { if(!flag) { if(num||m) { v=10000/(m*100+num); //1米 扩大10000 vg=v%10; vs=v%100/10; vb=v%1000/100; vq=v%10000/1000; vw=v%100000/10000; vsw=v%1000000/100000; num=0; m=0; TH0=(65535-10000)/256; TL0=(65535-10000)%256; } display(); } if(flag) { display1(); } } } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-4 14:20 , Processed in 0.492677 second(s), Total 83, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号