No.5243 作者:ALP 邮件:ALP2502@SOHU.COM ID:3395 登陆:3次 文章数:9篇 最后登陆IP:61.144.193.63 最后登陆:2004/7/22 16:45:47 注册:2002/1/18 9:40:00 财富:35 发帖时间:2002/1/25 8:56:00 发贴者IP:61.142.10.84 标题:ALP:C51编程:簡單問題愁煞人 摘要:No.5243C51编程:簡單問題愁煞人 各位大俠﹕ 我寫了一個DS1302的應用程序﹐運行時LED顯示有錯﹕數字顯示不全﹐如"8"共陰極字型 碼是0X80,但顯示結果是0X87,后3位出錯﹔其它數字類似﹐均是后3位出錯。經運行測試程 序﹐硬件上無錯。百思不得其解﹐請教個位大俠。附源程序如下﹕ /***************************************************************************/ /* DS1302.C */ /***************************************************************************/ #include <stdio.h> #include <reg51.h> #include <intrins.h> #define uchar unsigned char /***************************************************************************/ /* Prototypes */ /***************************************************************************/ void clkwritebyte(); void ramwritebyte(); uchar rbyte_3w(); void reset_3w(); void wbyte_3w(uchar); void initialize_DS1302(); void disp_clk_regs(); void burstramrd(); void burstramwr(); sbit SCLK = P1^2; sbit IO = P1^3; sbit RSTB = P1^4; /* ----------------------------------------------------------------------- */ void reset_3w() { SCLK = 0; RSTB = 0; RSTB = 1; } /* ----------------------------------------------------------------------- */ void wait(uchar t) { uchar i,j; for (i=0; i<=t; i++) { for (j=0; j<120; j++) { _nop_(); } } } /* ----------------------------------------------------------------------- */ void wbyte_3w(uchar W_Byte) { uchar i; for(i = 0; i < 8; ++i) { IO = 0; SCLK = 0; if(W_Byte & 0x01) { IO = 1; /* set port pin high to read data */ } SCLK = 1; W_Byte >>= 1; } } /* ----------------------------------------------------------------------- */ uchar rbyte_3w() { uchar i; uchar R_Byte; uchar TmpByte; R_Byte = 0x00; /*IO = 1;*/ for(i=0; i<8; ++i) { SCLK = 1; SCLK = 0; ......
>>返回讨论的主题
|