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

📄 中断.c

📁 单片机测试=====================================时钟芯片测试
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>

#define CS(ADDR) XBYTE[ADDR]

typedef unsigned int uint;
typedef unsigned char uchar;

sbit CS=P1^4;
sbit CLK=P1^7;
sbit DIO=P1^6;
sbit KEY=P3^2;

uchar half_hign;
uchar half_low;

bdata uchar com_data;
sbit mos_bit=com_data^7;
sbit low_bit=com_data^0;

void delay_50us()
{   
	uchar i;
	for (i=0; i<6; i++){;}
}

void delay_8us()
{
	uchar i;
	for (i=0; i<1; i++){;}
}
void delay_50ms()
{
	uchar i,j;
	for(j=0;j<50;j++)
		for(i=0;i<125;i++){;}
}
void send(uchar sebuf)
{
	uchar i;
	com_data=sebuf;
	CLK=0;
	CS=0;
	delay_50us();
	for(i=0;i<8;i++)
	{
		delay_8us();
		DIO=mos_bit;
		CLK=1;
		delay_8us();
		com_data=com_data<<1;
		CLK=0;
	}
	DIO=0;
}
uchar receive(void)
{
	uchar i,rebuf;
	CLK=1;
	delay_50us();
	for(i=0;i<8;i++)
	{
		com_data=com_data<<1;
		low_bit=DIO;
		CLK=1;
		delay_8us();
		CLK=0;
		delay_8us();
	}
	rebuf=com_data;
	DIO =1;
	CS=1;
	return rebuf;
}
void reset(void)
{
	DIO=1;
	delay_50ms();
	send(0xa4);
	CS=1;
}
/*  7289显示程序                  */ 
/*  addr为显示位置 范围0~7		  */
/*  dat为现实内容                 */
void display(uchar addr,uchar dat)
{
	if(addr<0 || addr >7)
		return;
	send(0xc8 + addr);
	delay_50us();
	send(dat);
	CS=1;
}

void main()
{ 
	uchar dat,dbit = 0;
	reset(); 
	while(1)
	{	
		dat = CS(0x0000) & 0x1f;         //读取中断状态
    	dbit = dat & 0x10;
		if(dbit == 0x10)		//判断每一位的状态
			display(0,1);
		else
		    display(0,0);

		dbit = dat & 0x08;
		if(dbit == 0x08)
			display(1,1);
		else
		    display(1,0);

		dbit = dat & 0x04;
		if(dbit == 0x04)
			display(2,1);
		else
		    display(2,0);

		dbit = dat & 0x02;
		if(dbit == 0x02)
			display(3,1);
		else
		    display(3,0);

		dbit = dat & 0x01;
		if(dbit == 0x01)
			display(4,1);
		else
		    display(4,0);
		delay_50ms();
	}
}

⌨️ 快捷键说明

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