微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一些实用的单片机c程序

一些实用的单片机c程序

时间:12-03 来源:互联网 点击:

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;i<8;i++) {
if (dd&1) 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[dd&0x3f]^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;i<10;i++) d[i]=i; //display test
while (1) {}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top