完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问是中断错了吗?只显示000.0。霍尔有脉冲输出,磁钢靠近时输出的电压为0.07V几乎为零,不靠近时为4.6V,也就是输出为低电平。有会仿真的吗?帮帮忙啊!!!
#include #include #define SYSCLK 12.00 // 时钟脉冲,单位MHz #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define R 5 //半径0.5m #define PI 314 //pi=3.14 //段选定义 ***it P0_0 = P0^0; ***it P0_1 = P0^1; ***it P0_2 = P0^2; ***it P0_3 = P0^3; ***it P0_4 = P0^4; ***it P0_5 = P0^5; ***it P0_6 = P0^6; ***it P0_7 = P0^7; uchar code SEG_TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //采用共阳 0-9数字 dp不点亮 uchar code SEG_TAB1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //0.-9.数字 dp点亮 void Delay(void); ulong js; uchar k=0; void main() { TMOD=0x51; TH1=0x00; TL1=0x00; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; ET1=1; TR1=1; TR0=1; //定时开始 while(1) { P0=0xf0; P0 = SEG_TAB[js*2*PI*R/100000 ]; //显示千位米每秒 P2 = 0xfe; //共阳 位选 Delay(); P0 = SEG_TAB[(js*2*PI*R%100000)/100 ]; //显示百位 P2 =0xfd; Delay(); P0 = SEG_TAB1[ (js*2*PI*R%100000)%100/10 ]; //显示十位加小数点 P2 = 0xfb; Delay(); P0 = SEG_TAB[ (js*2*PI*R%100000)%100%10 ]; //显示个位 P2 = 0xf7; Delay(); } } //******************中断子程序*********************************** void timer0(void) interrupt 1 { TL0=0xb0; TH0=0x3c; k++; if(k>=20) //每1s钟计算一次 { EA=0; TR0=0; TR1=0; js=TH1*256+TL1; TH1=0;TL1=0;k=0; } js=0; EA=1; TR0=1; TR1=1; } void Delay(void) { uchar i; for(i=0;i<100;i++); } 大家能看出来吧?T0口定时,T1口计数的。谢谢你们了,比较急... |
|
相关推荐
1 个讨论
|
|
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:27 , Processed in 0.568445 second(s), Total 49, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号