基于8086的电子万年历打印稿 下载本文

int btn;//io接口 int count=0;

void outp(unsigned int addr, char data) // Output byte to port { __asm

{ mov dx, addr mov al, data out dx, al } }

char inp(unsigned int addr) // Input byte from port { char result; __asm

{ mov dx, addr in ax, dx

mov result, ax }

return result; }

void delay() //延迟函数 {

int t=0;

for(t=0;t<100;t++) {}; }

void nian(int x)//对年份进行处理 {

n1=x/1000; x=x-1000*n1; n2=x/100; x=x-100*n2; n3=x/10; n4=x-10*n3; }

void yue(int x)//对月进行处理

8

{

if(x>9) {

y2=x; x=x-y2; y1=x/10; } else { y2=x; y1=0; } }

void tian(int x)//对日进行处理 {

t2=x; x=x-t2; t1=x/10; }

void shi(int x)//对时进行处理 {

s2=x; x=x-s2; s1=x/10; }

void fen(int x)//对分进行处理 { f2=x; x=x-f2; f1=x/10; }

void miao(int x)//对秒进行处理 {

m2=x; x=x-m2; m1=x/10; }

void xingqi(void)//对星期处理 {

if(y2==1&&y1==0) { y1=1; y2=3;

9

} else if(y2==2&&y1==0) { y1=1; y2=4; }

xq=((10*n1+n2)/4-2*(10*n1+n2)+(10*n3+n4)+(10*n3+n4)/4+13*(10*y1+y2+1)/5+10*t1+t2+1)%7; }

void xienian()//写年到数码管 { int i=0; outp(IOA,shuma[i]);

outp(IOB,table[n1]); i++; delay();

outp(IOA,shuma[i]);

outp(IOB,table[n2]); i++; delay();

outp(IOA,shuma[i]);

outp(IOB,table[n3]); i++; delay();

outp(IOA,shuma[i]);

outp(IOB,table[n4]); delay();

}

void xieyue()//写月到数码管 {

int i=4;

outp(IOA,shuma[i]);

outp(IOB,table[y1]); i++;

10

delay();

outp(IOA,shuma[i]);

outp(IOB,table[y2]); i++; delay();

}

void xietian()//写天到数码管 { int i=6; outp(IOA,shuma[i]);

outp(IOB,table[t1]); i++; delay();

outp(IOA,shuma[i]);

outp(IOB,table[t2]); i++; delay(); } void xieshi()//写小时到数码管 { int i=0; outp(IOC1,shuma[i]); outp(IOB1,table[s1]); delay(); i++; outp(IOC1,shuma[i]); outp(IOB1,table[s2]); delay(); } void xiefen()//写分钟到数码管

11