找回密码
 注册
查看: 297|回复: 4
打印 上一主题 下一主题

求让其可正常显示倒计时

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-2-7 10:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
  • #include
  • #include
  • #define a8255_PA XBYTE[0xd900] /*PA 口地址 */
  • #define a8255_PB XBYTE[0xdb00] /*PB 口地址 */
  • #define a8255_PC XBYTE[0xD5FF] /*PC 口地址 */
  • #define a8255_CON XBYTE[0xde00] /*控制字地址 */
  • #define uchar unsigned char
  • #define uint unsigned long int
  • uint a,n,i,j,x=1,b=1,tt=0;
  • uint table[]={0x80,0x9B,0x42,0x0A,0x19,0x0C,0x04,0x9A,0x00,0x08};
  • void delay1(void)
  • {
  •         unsigned char i;
  •         for(i=250; i>0;i--);
  • }
  • uchar inkey()
  • {
  •         uchar i,j=0x10,k;
  • uchar keytab[20]={0x18, /*0*/
  • 0x28, /*1*/
  • 0x48, /*2*/
  • 0x88, /*3*/
  • 0x14, /*4*/
  • 0x24, /*5*/
  • 0x44, /*6*/
  • 0x84, /*7*/
  • 0x12, /*8*/
  • 0x22, /*9*/
  • 0x42, /*10*/
  • 0x82, /*11*/
  • 0x11, /*12*/
  • 0x21, /*13*/
  • 0x41, /*14*/
  • 0x81 /*15*/
  • };
  •         a8255_CON=0x81;
  •         a8255_PC=0x00;
  •         for(i=0;i<4;i++)
  •         {
  •                 a8255_PC=j;
  •                 a8255_PA=0xff;
  •                 a8255_PB=0xff;
  •                 k=a8255_PC;
  •                 k=k&0x0f;
  •                 if(k!=0)
  •                 { delay1();
  •                         k=a8255_PC;
  •                          k=k&0x0f;
  •                                 if(k!=0)
  •                                 break;
  •                 }
  •         j=j<<1;
  •         delay1();
  •         }
  •         k=k+j;
  •         for(i=0;i<16;i++)
  •         {
  •         if(keytab==k) break;
  •         }
  • return i;
  • }
  • void delay(uint z)
  • {
  •         uint x,y;
  •         for(x=z;x>0;x--)
  •         for(y=11;y>0;y--);
  • }
  • void display(uint a)
  • {
  •         uint wan,qian,bai,shi,ge;
  •         wan=a/10000;
  •         qian=a%10000/1000;
  •         bai=a%1000/100;
  •         shi=a%100/10;
  •         ge=a%10;
  •         a8255_PA=0xfd;
  •         a8255_PB=table[wan];
  •         delay(1);
  •         a8255_PA=0xfb;
  •         a8255_PB=table[qian];
  •         delay(1);
  •         a8255_PA=0xf7;
  •         a8255_PB=table[bai];
  •         delay(1);
  •         a8255_PA=0xef;
  •         a8255_PB=table[shi];
  •         delay(1);
  •         a8255_PA=0xdf;
  •         a8255_PB=table[ge];
  •         delay(1);
  • }
  • void display1()
  • {
  •         a8255_PA=0xdf;
  •         a8255_PB=0x80;
  •         delay(1);
  •         a8255_PA=0xef;
  •         a8255_PB=0x7f;
  •         delay(1);
  • }
  • void init()
  • {         a8255_PA=0xff;
  •         a8255_CON=0x81;
  •         tt=0;
  •         TMOD=0x01;
  •         TH0=0x3c;
  •         TL0=0xb0;
  •         EA=1;
  •         ET0=1;
  •         TR0=1;
  •         EX0=1;
  •         IT1=1;
  • }
  • void main()
  • {
  •         uchar n=0,k=0xdf;
  •         init();
  •         a=0;
  •         while(1)
  •         {
  •         n=inkey();
  •         switch(n)
  •         {
  •                 case 0:         a=99999;        break;
  •                 case 1:         a=9999;         break;
  •              case 2:         a=999;                 break;
  •             case 3:         a=99;                 break;
  •            case 4:                 a=9;                 break;
  • }
  •         if(n==5)
  •         {
  •                 do
  •                 {
  •                         display1();
  •                         n=inkey();
  •                         if((n!=5)&&(n!=16))
  •                         {
  •                                 x=0;
  •                         }
  •                 }while(x);
  •                 x=1;
  •         }
  •         display(a);
  •         }
  • }
  • void timer0() interrupt 1
  • {
  •         TH0=0x3c;
  •         TL0=0xb0;
  •         tt++;
  •         if(tt==20)
  •         {
  •                 tt=0;
  •                 if(a)
  •                 {
  •                         a--;
  •                 }
  •         }
  • }
  • - @5 M# e5 K8 R
- |9 g: L( o  J% e6 s! U( a

- d& j9 Z( d  T8 L3 F* _3 i5 P2 h7 N

该用户从未签到

2#
发表于 2023-2-7 11:03 | 只看该作者
图也有了,程序也有了,你还想要啥?

该用户从未签到

3#
发表于 2023-2-7 13:25 | 只看该作者
数码管分共阳极和共阴极两种,你应该是选错了;库里面是有说明它什么极的

该用户从未签到

4#
发表于 2023-2-7 13:34 | 只看该作者
单片机P0口加上拉电阻试试,其实也可以不用8255A,单片机的接口够用了。

该用户从未签到

5#
发表于 2023-2-7 13:45 | 只看该作者
1:8255的复位信号从哪里来?! U7 ~9 b- t# [4 C" L
2:数码管是共阴还是共阳?
: @! G8 q& C& s3:数码管内部是否带有限流电阻
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-5-26 07:10 , Processed in 0.093750 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表