No.33538 作者:苹果啃牙 邮件:yxling316@yahoo.com.cn ID:12843 登陆:1次 文章数:5篇 最后登陆IP:202.103.38.170 最后登陆:2003/6/8 10:34:24 注册:2003/6/6 19:21:11 财富:115 发帖时间:2003/6/6 19:26:10 发贴者IP:202.103.38.170 标题:苹果啃牙:请教! 摘要:No.33538请教! 不知道我这个程序出错出在哪里,请各位大侠帮帮小妹我! 谢谢··!! #include <reg52.h> #include <intrins.h> //#define uint unsigned int //下面是引脚连接关系 sbit SCL_DS1302 =P3^2; sbit IO_DS1302 =P3^3; sbit RST_DS1302 =P3^4; sbit wr = P3^6; sbit b0=P1^0; sbit button1=P1^4; sbit button2=P1^5; sbit button3=P1^6; sbit button4=P1^7; unsigned int data display_buffer1[8],display_buffer2[8]; unsigned char bdata data_ds1302; sbit bit_data0=data_ds1302^0; sbit bit_data7=data_ds1302^7; unsigned char bdata x; sbit x0 =x^0; sbit x7 =x^7; void open_write_bit(); void initial_ds1302(); unsigned char read_ds1302(char command); void open_write_bit(); void close_write_bit(); void read_time(); void set_time(); unsigned int zhuanhuan( unsigned int b); void display1(); void display2(); void button(); void main( void) { initial_ds1302(); //上电启用,否则不走时 read_time(); //读取当前的年月日时分秒在数组 b0=0; display_buffer2[5]=0X00; display_buffer2[4]=0X03; display_buffer2[3]=0X00; display_buffer2[2]=0X06; display_buffer2[1]=0X01; display_buffer2[0]=0X04; display_buffer1[5]=0X00; display_buffer1[4]=0X08; display_buffer1[3]=0X01; display_buffer1[2]=0X00; display_buffer1[1]=0X05; display_buffer1[0]=0X08; //将03年6月14日08时10分58秒设置为当前时间 set_time(); //将数组中的时间置入DS1302 while(1) { button(); read_time(); } } void display1() { unsigned int *p; unsigned int i, j, k; p = display_buffer1; j = 0xA0; for(i=0;i <8;i++) { k = *p; k = zhuanhuan( k); P2 = j; wr = 0; // while(1); _nop_( ); _nop_( ); _nop_( ); _nop_( ); P0 = k; _nop_( ); _nop_( ); wr = 1; p = p + 1; j = j + 4; } } void display2() { unsigned int *p; unsigned int i, j, k; p = display_buffer2; j = 0xA0; for(i=0;i <8;i++) { k = *p; k = zhuanhuan( k); P2 = j; wr = 0; // while(1); _nop_( ); _nop_( ); _nop_( ); _nop_( ); P0 = k; _nop_( ); _nop_( ); wr = 1; p = p + 1; j = j + 4; } } unsigned int zhuanhuan( unsigned int b) { switch( b) { case 0: b = 0xc0; break; case 1: b = 0xf9; break; case 2: b = 0xa4; break; case 3: b = 0xb0; break; case 4: b = 0x99; break; case 5: b = 0x92; break; case 6: b = 0x82; break; case 7: b = 0xf8; break; case 8: b = 0x80; break; case 9: b = 0x98; break; default: break; } return b; } void close_write_bit() { char i; SCL_DS1302=0; _nop_(); RST_DS1302=1; _nop_();_nop_(); data_ds1302=0x8e; //write control redister for (i=1;i <=8;i++) { SCL_DS1302=0;IO_DS1302=bit_data0; _nop_();SCL_DS1302=1; data_ds1302=data_ds1302> > 1; } data_ds1302=0x80; //close write protect bit IO_DS1302=0; for (i=1;i <=8;i++) { SCL_DS1302=0;IO_DS1302=bit_data0; _nop_();SCL_DS1302=1; data_ds1302=data_ds1302> > 1; } } void open_write_bit() { char i; SCL_DS1302=0; _nop_(); RST_DS1302=1; _nop_();_nop_(); data_ds1302=0x8e; //write control redister for (i=1;i <=8;i++) { SCL_DS1302=0;IO_DS1302=bit_data0; _nop_();SCL_DS1302=1; data_ds1302=data_ds1302> > 1; } data_ds1302=0x00; //open write protect bit IO_DS1302=0; for (i=1;i <=8;i++) { SCL_DS1302=0;IO_DS1302=bit_data0; _nop_();SCL_DS1302=1; data_ds1302=data_ds1302> > 1; } } void initial_ds1302() { unsigned char i; SCL_DS1302=0; _nop_(); RST_DS1302=1; _nop_();_nop_(); data_ds1302=0x8e; //write control redister for (i=1;i <=8;i++) { SCL_DS1302=0;IO_DS1302=bit_data0; _nop_();SCL_DS1302=1; data_ds1302=data_ds1302> > 1; } data_ds1302=0x80; //close write protect bit IO_DS1302=0; for (i=1;i <=8;i++) { SCL_DS1302=0;IO_DS1302=bit_data0;_nop_(); SCL_DS1302=1;data_ds1302=data_ds1302> > 1; } RST_DS1302=0; _nop_(); SCL_DS1302=0; SCL_DS1302=0; _nop_(); RST_DS1302=1; _nop_();_nop_(); data_ds1302=0x90; ......
>>返回讨论的主题
|