请教4094级联问题在哪儿???
程序:
#include<reg52.h> #include<absacc.h> #include<intrins.h>
#define uchar unsigned char #define uint unsigned int
sbit sda=P2^0; sbit sck=P2^1; sbit rck=P2^2;
uchar code led[10]={0xfc,0x60,0xdb,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; //"0,1,2,3,4,5,6,7,8,9" uchar code pos[5]={0x08,0x10,0x20,0x40,0x80}; char data dis_data[5]={0,0,0,0,0}; //显示数据 /*void delay2ms() { unsigned char a,b,c; for(a=0;a<2;a++) for(b=0;b<3;b++) for(c=0;c<220;c++); } */ void delay(uint k) { uint m,n; for(m=k;m>0;m--) for(n=0;n<125;n++); } void disply() { unsigned char num,n,date; for(num=0;num<5;num++) { //将位数据写入4094 date=pos[num]; for(n=0;n<8;n++) { date=date<<1; sda=CY; sck=0; _nop_(); _nop_(); sck=1; } //将段数据写入4094 date=led[dis_data[num]]; for(n=0;n<8;n++) { date=date<<1; sda=CY; sck=0; _nop_(); _nop_(); sck=1;//上升沿发生位移 } //数据输出 rck=0; _nop_(); _nop_(); rck=1;
//delay2ms(); delay(300); }
}
void main() { long dis_data1; while(1) { dis_data1=65432; dis_data[4]=(dis_data1%100000)/10000; dis_data[3]=(dis_data1%10000)/1000; dis_data[2]=(dis_data1%1000)/100; dis_data[1]=(dis_data1%100)/10; dis_data[0]=dis_data1%10; disply(); } }
 |