16进制与10进制转化程序
unsigned char code un_dig[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb};
//串行送出的短信息。
unsigned char code
un_disp[]={l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,l_,lb,lc,l__,l___,lnul,lp,le,lj,ln,lf,la,lr,ld,lu,
ll,lh,lwen,lt,lla,llb,llc,lld,lle,llf,llg,lldp,lnul};
sbit d_clk=P0^0; //移位时钟
sbit d_dat=P0^1; //移位数据
sbit d_st=P0^2; //移位锁定
unsigned char dig; //位扫描计数器
unsigned char d[10]; //显示缓冲
//送出8位串行数据
void out_disp(unsigned char dd) {
unsigned char i;
for (i=0;i8;i++) {
if (dd1) d_dat=1; else d_dat=0;
d_clk=0;
dd>>=1;
d_clk=1;
}
}
//控制小数点和闪烁,显示数据|0x040表示有小数点;显示数据|0x80表示闪烁。
void out_displ(unsigned char dd) {
if (dd>=0x80) {
if (s001>flash_time) {out_disp(0xff);return;}
}
dd=0x7f;
if (dd>=0x40) {
dd=un_disp[dd0x3f]^pdp;
} else dd=un_disp[dd];
out_disp(dd);
}
unsigned int s001; //闪烁时间参考
void int_t0(void) interrupt 1 {
unsigned char dd;
TL0=TL0+30;TH0=0xfb; //800
time++;
if ((++s001)>=800) s001=0;
// 显示
if ((++dig)>4) dig=0;
d_st=0;
dd=d[dig+5];
out_displ(dd);
dd=d[dig];
out_displ(dd);
out_disp(un_dig[dig]);
d_st=1;
}
void main(void) {
unsigned char i;
TMOD=0x1;
TR0=ET0=1;
EA=1;
for (i=0;i10;i++) d[i]=i; //display test
while (1) {}
}
- 二进制数折半查找算法在DSP上的实现(11-30)
- 基于AT89C51单片机的十进制计算器系统设计(06-29)
- 汇编:将四位十进制数转化为十六进制数(12-01)
- 汇编:输入一位十六进制数将其转化为2进制数(12-01)
- 汇编:将两位十进制数转化为十六进制数(12-01)
- 进制位(CY)与数据左、右移动(12-01)