⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcu.c

📁 这是一个8255实用的子程序
💻 C
字号:
/***************************************************************
mcu_8255A
copyright software keil inc
***************************************************************/
#include <reg51.h>
#include <math.h>
#include <stdio.h>
#include <absacc.h>

#define WR_Port_A XBYTE[0X7cff]  //0111,1100
#define WR_Port_B XBYTE[0X7eff]  //0111,1110
#define WR_Port_C XBYTE[0X7dff]  //0111,1101
#define WR_Control XBYTE[0X7fff] //0111,1111

#define uchar unsigned char 
#define uint unsigned int

sbit WDI=P1^7;//watchdog signal input pin
sbit light=P1^6;
sbit EX_int0=P3^2;

uchar temp;
uchar Counts_R,Counts_F,Counts_S;

uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 

uchar idata buf_R[4];
uchar idata buf_F[4];
uchar idata buf_S[4];

void delay(uchar);
void display(uchar idata *);
void display_0(uchar idata *);//---------------------
void math_add();

void display_All();
void display_R(uchar idata *);
void display_F(uchar idata *);
void display_S(uchar idata *);

void main(void)
{
     uchar i,j;
     uchar idata dis_buf[2];
     uchar idata dis_buf_0[4];//-----------------------

     WR_Control=0x80;
	 delay(2);
	 for(i=0;i<20;i++)
	 {
	       j=100;
		   while(--j);
	 }

	 Counts_R=20;
	 Counts_F=30;

     display_0(dis_buf_0);//----------------------------
     while(1)
	 {
           Counts_S=Counts_F+Counts_R;
		   math_add();
		   display_All();
	       /*for(i=0;i<2;i++)
		   {
		        dis_buf[i]=temp%10;
				temp=temp/10;
		   }*/
		   WDI=!WDI;
		   while(j<=200)
		   {
                display(dis_buf); 
				j++;
		   }
	 }
}
/*----------------------display_Loop()-----------------*/
void display(uchar idata *pt)
{
     uchar i,temp;

	 temp=0x01;//0000,0001
     for(i=0;i<2;i++)
	 {
           WR_Port_A=table[*pt];
		   WR_Port_B=temp;
		   delay(20);
		   pt++;
		   if(temp!=0x04)
		   temp=temp<<1;
		   //temp=0xef;//111,01,111;
	 }
}

/*---------------delay_time(uchar)--------------------*/
void delay(uchar time)
{

     uchar  i,j; 
     for(i=0;i<time;i++)
     {
	       j=100;
	       while(--j);
	 }
}

/*-------------------display_0()---------------*/
void display_0(uchar idata *ptt)
{
     uchar i,temp;
	 temp=0x01;
	 for(i=0;i<4;i++)
	 {
	      WR_Port_A=table[*ptt];
		  WR_Port_B=temp;
		  delay(20);
		  ptt++;
	 }
}
/*--------------------math_add()--------------*/
void math_add()
{
     uchar i,temp_EE;
	 temp_EE=Counts_R;
     for(i=0;i<4;i++)
	 {
	      buf_R[i]=temp_EE%10;
	      temp_EE=temp_EE/10;
	 }
	 temp_EE=Counts_F;
	 for(i=0;i<4;i++)
	 {
	      buf_F[i]=temp_EE%10;
		  temp_EE=temp_EE/10;
	 }
	 temp_EE=Counts_S;
	 for(i=0;i<4;i++)
	 {
	      buf_S[i]=temp_EE%10;
		  temp_EE=temp_EE/10;
	 }
}
/*---------------------display_all()-------------*/
void display_All()
{
     display_R(buf_R);
	 display_F(buf_F);
	 display_S(buf_S);
}
/*--------------------display_R()----------------*/
void display_R(uchar idata *pt_R)
{
     uchar i;
	 temp=0x01;
	 for(i=0;i<4;i++)
	 {
	      WR_Port_A=table[*pt_R];
		  WR_Port_B=temp;
		  delay(20);
		  pt_R++;
		  temp=temp<<1;
	 }
}
void display_F(uchar idata *pt_F)
{
     uchar i;
	 for(i=0;i<4;i++)
	 {
	      WR_Port_A=table[*pt_F];
		  WR_Port_B=temp;
		  delay(20);
		  pt_F++;
		  temp=temp<<1;
	 }
}
void display_S(uchar idata *pt_S)
{
     uchar i;
	 for(i=0;i<4;i++)
	 {
	      WR_Port_A=table[*pt_S];
	 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -