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

📄 ledkey.c

📁 usblab usb程序开发实验 一个实例
💻 C
字号:
/*
   //************************************************************************* //
   //                  
   //
   //           COPYRIGHT (c)   2006 BY FOSHAN LX.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	UFMAIN.C
   // Author:		guobin
   // Created:		2006/04/20
   // Modified:
   // Revision:		2.0
   //
   //*************************************************************************
*/

//CPU:	P89LPC932A1		8K Flash		256+512Byte	RAM
//Crystal:12MHz	Fosc=12M
//DIVM=0		CCLK=Fosc=12M
//Single INS=6M=166ns

#include <stdio.h>
#include <string.h>

#include "hardware.h"  

unsigned char LLEDData,RLEDData;
bit	bdata	CLRFlag;
unsigned char KeyCount;
bit	bdata	KeyReleaseFlag;
unsigned char KeyEvent;
unsigned char TestData;

void (*ISP)();

//P00(O)     P01(O)     P02(O)     P03(O)     P04(O)     P05(O)     P06(O)     P07(O)
//P10(O)     P11(I)      P12(O)     P13(I/O)  P14(I)      P15(I)      P16(O)     P17(O)
//P20(I/O)  P21(I/O)  P22(I/O)  P23(I/O)  P24(I/O)  P25(I/O)  P26(I/O)  P27(I/O)  
void	GPIO_Initial(void)
{
	P0M1=0x00;
	P0M2=0x00;
	P1M1=0x20;
	P1M2=0x00;
	P2M1=0x00;
	P2M2=0x00;
}

void	ISP_Initial(void)
{
	ISP=0x1F00;
	if(!Key)
		ISP();

	SSTAT=0xFA;
	BRGCON=0x00;
	AUXR1=0x40;
	SCON=0x50;
	BRGR1=0x04;			//cystal=12M		baund=9600(0x04d2)-----baund=cclk/((brgr1,brgr0)+16)
	BRGR0=0xD2;
	BRGCON=0x03;
}

/*
位段编码对应关系:
数码管位:a  b  c  d  e  f  g  dp
74HC164:  Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
Q对应输出1点亮相应的位,比如显示1---写74HC164数据01100000(0x60)  
*/
code UCHAR	LEDCode[]=				  //数码管编码表
{
0xFC,	//'0'
0x60,	//'1'
0xDA,	//'2'
0xF2,	//'3'
0x66,	//'4'
0xB6,	//'5'
0xBE,	//'6'
0xE0,	//'7'
0xFE,	//'8'
0xF6,	//'9'
};

/*
写74HC164函数
入口参数:写1个字节数据
出口参数:无
*/
void HC164(UCHAR Dat)
{
	UCHAR i;

	HC164_CLK=0;
	for(i=0;i<8;i++)
	{
	if(Dat&0x01)				//移为顺序:LSB位先移出
		HC164_AB=1;
	else
		HC164_AB=0;
	HC164_CLK=1;
	HC164_CLK=0;
	Dat>>=1;
	}
}

void ScanLEDOutput(void)
{
	NLEDR=NLEDL=1;
	if(CLRFlag)
	{
		CLRFlag=0;
		HC164(LEDCode[RLEDData]);
		NLEDR=0;
	}
	else
	{
		CLRFlag=1;
		HC164(LEDCode[LLEDData]);
		NLEDL=0;
	}
}

void T0_Initial(void)
{
	TMOD&=0xf0;
	TMOD|=0x01;
	TH0=0x8A;		 //5MS
	TL0=0xD0;
	TR0=1;
	ET0=1;
	EA=1;
}

void T0_IRQ(void)		interrupt 1
{
	TH0=0x8A;
	TL0=0xD0;

	ScanLEDOutput();

	if(Key)
	{
		KeyCount=0;
		KeyReleaseFlag=1;
	}
	else
		{
		KeyCount++;
		if((KeyCount==20)&&KeyReleaseFlag)
			{
			KeyEvent=1;
			KeyReleaseFlag=0;
			}
		}
}

void	main(void)
{
	GPIO_Initial();

	ISP_Initial();

	T0_Initial();

	while(1)
	{
		if(KeyEvent)
		{
			KeyEvent=0;
			TestData++;
			if(TestData==100)
				TestData=0;
			LLEDData=TestData/10;
			RLEDData=TestData%10;
		}
	}
}







⌨️ 快捷键说明

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