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

📄 main.c

📁 利用89s51去寫結構化keil-C 4x4鍵盤掃描+LCD螢幕顯示 HW01:四則運算+時鍾顯示 HW02:頻率偵測器 ps.鍵盤掃描不是利用延遲作彈跳(推薦)
💻 C
字号:
//**
#include "Main.h"


//12/11.0592M = 1.0850694us
//46080*1.0850695 = 50000.00256us = 50.00000256ms
//				  = 50ms
//18432*1.0850695 = 20ms
//
//
// 12/12M = 1.0us
// 50000*1.0 = 50000us = 50ms
// 50ms * 20(count) = 1sec
// Div 120
// 12/30M = 0.4us
// 50000*0.4 = 20000us = 20ms
// 20ms * 50(count) = 1sec
// Div 4
// 4/30M = 0.133us
// 50000*0.133 = 6650us = 6.65ms
// 6.65ms * 150(count) = 1sec

//#define __DEBUG_UART_OUTPUT_DEBUG_

//BYTE bdata g_bFlag[8] _at_ 0x20;
//sbit g_bfInterfaceOpen = g_bFlag[0]^0;
//BYTE bdata	g_bfKeyStatus _at_ 0x20;


/////////////////////////////////////////////////////////////////////////////
// Variable
#ifdef _HW01_
//BYTE bdata	g_bfKeyStatus _at_ 0x20;
BYTE bdata	g_bfCurrentMode;
//BYTE bdata	g_bfLcdStatus _at_ 0x22;
BYTE data	g_bSYS_MODE;	//sbit	MODE_CLOCK = g_bfCurrentMode^0;
BYTE data	g_bTimeOut;
BYTE data	g_bOutputH, g_bOutputL;
WORD data	g_wTimerCount;
#endif

#ifdef _HW02_
WORD data	g_wTimerCount;
BYTE data g_bfOneSec;

typedef union
{
	BYTE		baBD[4];
//	DWORD		dwValue;
	struct
	{
		WORD	wH;
		WORD	wL;
	}tw;
	struct
	{
		BYTE	bX;
		BYTE	bO;
		BYTE	bH;
		BYTE	bL;

	}tb;
}USTFREQ;
USTFREQ data g_dwFreq;
#endif

#ifdef _HW03_
//BYTE bdata	g_bfKeyStatus _at_ 0x20;
BYTE bdata	g_bfCurrentMode;
//BYTE bdata	g_bfLcdStatus _at_ 0x22;
BYTE data	g_bSYS_MODE;	//sbit	MODE_CLOCK = g_bfCurrentMode^0;
BYTE data	g_bTimeOut;
BYTE data	g_bOutputH, g_bOutputL;
WORD data	g_wTimerCount;
#endif


/////////////////////////////////////////////////////////////////////////////
// Main.c

void fnDelay1ms(int count)
{
	int i,j;

	for(i=0;i<count;i++)
        	for(j=0;j<122;j++);
}

/*
void fnDelay100ms()
{
    unsigned char i,j,k;
    for(i=5;i>0;i--)
        for(j=132;j>0;j--)
            for(k=150;k>0;k--);
}


void fnDelay200ms()
{
    unsigned char i,j,k;
    for(i=5;i>0;i--)
        for(j=132;j>0;j--)
            for(k=150;k>0;k--);
}


void fnDelay500ms()
{
    unsigned char i,j,k;
    for(i=15;i>0;i--)
        for(j=202;j>0;j--)
            for(k=81;k>0;k--);
}


void fnDelay1000ms()
{
    unsigned char h,i,j,k;
    for(h=5;h>0;h--)
        for(i=4;i>0;i--)
            for(j=116;j>0;j--)
                for(k=214;k>0;k--);
}


void fnFlashLED(BYTE bLed, BYTE bCount)
{
	while (bCount-- > 0)
	{
		P1 = bLed;
		fnDelay1ms(500);
		P1 = 0;
		fnDelay1ms(500);
	}
}
*/

/////////////////////////////////////////////////////////////////////////////
// Initial
void InitPort(void)
{
	P0 = 0xFF;
	P1 = 0xFF;
	P2 = 0xFF;
	P3 = 0xFF;
}


void InitInterrupt(void)
{
	IT0 = 0;		//

⌨️ 快捷键说明

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