No.42806 作者:www_com 邮件:3w@sina.com ID:12247 登陆:10次 文章数:7篇 最后登陆IP:211.98.106.47 最后登陆:2003/10/21 14:16:57 注册:2003/5/18 13:07:26 财富:135 发帖时间:2003/9/26 10:23:51 发贴者IP:211.98.106.47 标题:www_com:大虾们,帮忙给看看。没加看门狗,数码管可以显示00-99。 摘要:No.42806大虾们,帮忙给看看。没加看门狗,数码管可以显示00-99。 数码管显示99。看看应该在哪儿喂狗呢? /* this program is a led's example */ #include <reg51.h> #include <stdio.h> #include <INTRINS.H> #define uchar unsigned char #define uint unsigned int #define WREN 0x06 #define WRDI 0x04 #define RDSR 0x05 #define WRSR 0x01 #define READ 0x03 #define WRITE 0x02 #define nop5(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); sbit SO=P2^0; sbit SI=P2^2; sbit SCK=P2^3; sbit SCS=P2^4; sbit WP=P2^1; void rd_data(uchar); void timeToBuffer(); void delay(uint); void scanled(); void csh_X25045(); void rest_dog(); bit dog_sign; uchar one; uchar ten; uchar buffer[2]; uchar dog_buff[10]; void delay(uint x) { uchar j; while((x--)!=0){ for(j=0;j <125;j++) {;} } } void init_sys(void) { IP=0x08; TMOD=0x11; TH0=0x4c; TL0=0; TH1=0xb8; TL1=0; TR0=1; TR1=1; ET0=1; ET1=1; EA=1; ten=0; one=0; dog_sign=0; buffer[0]=0x28; buffer[1]=0x28; } void timer0(void) interrupt 1 using 1 {uchar click=0; TH0=0x4c; TL0=0x81; ++click; if(click> =20){ click=0; if(one++> =9){ one=0; if(ten++> =9){ ten=0; } } } } void timer1(void) interrupt 3 using 2 {uchar count=0; TL1=0; TH1=0xb8; ++count; if(count==70) rest_dog(); } void scanled() {uchar i; uchar opt0=0xff; uchar digit=0x80; for(i=0;i <2;i++){ P2=digit&0xc0; P0=buffer[i]; delay(1); P0=0xff; digit> > =1; } } void timeToBuffer() { rd_data(10); buffer[0]=dog_buff[one]; buffer[1]=dog_buff[ten]; } /********************************************************************* %%%%%%%%%%%%%%%%%%%%%%%%*X5045开始%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% **********************************************************************/ /********************************************************************** 向 X5045 发送命令 (8 bit) (初始:SCS = 0), SCK上升沿锁存数据 ***********************************************************************/ void sent_X5045(uchar n) { uchar i; for ( i=0x80; i> =0x01; i=i> > 1 ) { SCK = 0; /* SCK=0 */ if ( ( n & i ) == 0 ) SI = 0; else SI = 1; /* 置SI */ SCK = 1; /* SCK=1 */ SI=0; /* 清SI */ } } /*********************************************************************** 从 X5045 读出数据 (8 bit) (初始:SCS = 0), SCK下降沿输出数据 ************************************************************************/ uchar get_X5045() { uchar i,n; n=0x00; for ( i=0x80; i> =0x01; i=i> > 1 ) { SCK = 1; SO = 1; /* 置 SO 为读 */ SCK = 0; if ( SO == 1 ) n = ( n | i ); } return( n ); } /****************************************************************************** 读 X5045 状态寄存器 (8 bit) ******************************************************************************/ uchar rdsr_X5045() { uchar n; SCK = 0; SCS = 0; sent_X5045( 0x05 ); /* RDSR => X5045 */ n = get_X5045( ); SCK = 0; SCS = 1; return( n ); } /****************************************************************************** 等 X5045 内部写完成 ******************************************************************************/ void wrok_X5045() { uchar i; for ( i=0; i <=99; i++ ) { if ( ( rdsr_X5045() & 0x01 ) == 0x00 ) break; } } /****************************************************************************** 置 X5045 写使能 ******************************************************************************/ void wren_X5045() { SCK = 0; SCS = 0; sent_X5045( 0x06 ); /* WREN => X5045 写使能 */ SCK = 0; SCS = 1; } /****************************************************************** ......
>>返回讨论的主题
|