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

📄 main.c

📁 《Proteus在MCS-51&ARM7系统中的应用百例》逆向之 Chapter 7 《Proteus在MCS-51&ARM7系统中的应用百例》MCS-51例子的C语言版本。
💻 C
字号:
#include <reg51.h>

typedef unsigned char BYTE;

BYTE LED_0;
BYTE LED_1;
BYTE LED_2;
BYTE ADC;
BYTE TCNTA;
BYTE TCNTB;
BYTE H_TEMP;	//温度上限
BYTE L_TEMP;	//温度下限
bit FLAG;


sbit H_ALM=P3^0;
sbit L_ALM=P3^1;
sbit SOUND=P3^7;
sbit P21  =P2^1;
sbit P22  =P2^2;
sbit P23  =P2^3;
sbit CLOCK=P2^4;
sbit ST   =P2^5;
sbit EOC  =P2^6;
sbit OE   =P2^7;

BYTE code TABLE[]={	0x3F,0x06,0x5B,0x4F,0x66,
					0x6D,0x7D,0x07,0x7F,0x6F};


void INT_T0() interrupt 1
{
	CLOCK=~CLOCK;
}

void DELAY2()
{
	BYTE i=20;
	
	do
	{	
		BYTE j=20;
		do
		{	
			BYTE k=250;
			do
			{
			}while(--k);
		}while(--j);
	}while(--i);
}

void INT_T1() interrupt 3
{
	TH1=(65536-1000)/256;
	TL1=(65536-1000)%256;
	SOUND=~SOUND;
  	TCNTA++;

	if(FLAG)
	{
		if(TCNTA!=20)
			return;		
	}
	else
	{
		if(TCNTA!=30)
			return;	
	}

	TCNTA=0;
	TCNTB++;

	if(TCNTB!=25)
		return;
	TCNTA=0;
	TCNTB=0;
	DELAY2();
}

void DELAY()
{
	BYTE i=10;
	
	do
	{	
		BYTE j=250;
		do
		{}while(--j);
	}while(--i);
}



void DISP()
{
	BYTE temp;
	
	temp=TABLE[LED_0];
	P23=0;
	P0=temp;
	DELAY();
	P23=1;
	
	temp=TABLE[LED_1];
	P22=0;
	P0=temp;
	DELAY();
	P22=1;
	
	temp=TABLE[LED_2];
	P21=0;
	P0=temp;
	DELAY();
	P21=1;	
}

main()
{
	LED_0=0;
	LED_1=0;
	LED_2=0;
	H_TEMP=153;
	L_TEMP=77;
	TMOD=0x12;
	TH0=245;
	TL0=0;
	TH1=(65536-1000)/256;
	TL0=(65536-1000)%256;
	IE=0x8a;
	CY=0;
	TR0=1;

	while(1)
	{
		H_ALM=1;
		L_ALM=1;
		ST=0;
		ST=1;
		ST=0;
		while(!EOC);
		OE=1;
		ADC=P1;
		OE=0;

		if(ADC<77)
		{
			L_ALM=0;
			TR1=1;
			FLAG=0;
		}
		else if(ADC>H_TEMP)
		{
			H_ALM=0;
			TR1=1;
			FLAG=1;
		}
		else
		{
			TR1=0;
		}
		
		LED_2=ADC/100;
		LED_1=(ADC%100)/10;
		LED_0=(ADC%100)%10;
		DISP();		
	}
			
}

⌨️ 快捷键说明

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