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

📄 main.c

📁 C8051F内置DA接收程序代码加扩展键盘(独立式键盘直接连入IO口)
💻 C
字号:
/************************************************************************************
*  Copyright (c) 2004,西安铭朗电子科技有限责任公司
*            All rights reserved.
*
* 文件名称: MAIN.C
* 文件标识: none
* 适用器件: C8051F120
* 
* 摘 要:
* 
* 当前版本:1.0
* 作 者:张宁强
* 完成日期:2006年1月12日
*
* 历史版本:0.9 
* 原作者 : 张宁强
* 完成日期:2005年x月xx日
*************************************************************************************/

#include "MAIN.H"

#define LED_PORT P5 //P5.4--P5.7


void DelayMs(unsigned int n)//延时(n)MS,SYSCLK = 22118400
{
	unsigned int i;
	for(; n > 0; n--)
	{
		for(i = 2211; i > 0; i--);
	}
}

void SysClkInit(unsigned char s)//配置系统时钟 s=0时使用外部时钟,否则使用PLL
{
   int i = 0;

   char SFRPAGE_SAVE = SFRPAGE;        // 保存当前SFRPAGE
   SFRPAGE = CONFIG_PAGE;              // 改变页
   if(s == 0)                             // 使用外部时钟
   {
      OSCXCN = 0x67;
      for (i = 0; i < 3000; i++);
      while ((OSCXCN & 0x80) == 0);
      CLKSEL = 0x01;
   }
   else
   {                                      // 选择PLL
      OSCXCN = 0x67;
      for (i = 0; i < 3000; i++);
      while ((OSCXCN & 0x80) == 0);
      PLL0CN = 0x04;
      SFRPAGE = LEGACY_PAGE;
      FLSCL = 0x30;
      SFRPAGE = CONFIG_PAGE;
      PLL0CN |= 0x01;
      PLL0DIV = 0x02;                  //配置PLL频率为99532800
      PLL0FLT = 0x07;
      PLL0MUL = 0x09;
      for (i = 0; i < 15; i++);
      PLL0CN |= 0x02;
      while ((PLL0CN & 0x10) == 0);
      CLKSEL = 0x02;
   }

   SFRPAGE = SFRPAGE_SAVE;             // 恢复SFRPAGE
}

void SystemInit(void)//系统配置
{
   char SFRPAGE_SAVE = SFRPAGE;        // 保存当前SFRPAGE
   SFRPAGE = CONFIG_PAGE;              // 改变页

   WDTCN = 0xDE;   // 关闭 WDT
   WDTCN = 0xAD;

   LED_PORT = 0x0f;

   SFRPAGE = SFRPAGE_SAVE;             // 恢复SFRPAGE
}

void PortInit(void)//端口配置
{
   char SFRPAGE_SAVE = SFRPAGE;        // 保存当前SFRPAGE
   SFRPAGE = CONFIG_PAGE;              // 改变页

   //交叉开关配置
	XBR0 = 0x04;
	XBR1 = 0x00;
	XBR2 = 0x40;
	// P0 口分配状况
	// P0.0 = UART0 TX
	// P0.1 = UART0 RX

   //输出方式
   P5MDOUT = 0xf0;

   SFRPAGE = SFRPAGE_SAVE;             // 恢复SFRPAGE
}

void main(void)
{
	unsigned char KeyBuff;
   SFRPAGE = CONFIG_PAGE;              // 改变页
	SystemInit();//系统配置
	SysClkInit(1);//配置系统时钟
	PortInit();//端口配置
   DAC_Init();
	while(1)
	{
		KeyBuff=KeyScan();
		if(KeyBuff==1)
		{
         DAC0_Out_mV(500);
         DAC1_Out_mV(500);
			LED_PORT |= 0x10;
			DelayMs(50);
			LED_PORT &= ~0x10;
		}
		if(KeyBuff==2)
		{
         DAC0_Out_mV(1000);
         DAC1_Out_mV(1000);
			LED_PORT |= 0x20;
			DelayMs(50);
			LED_PORT &= ~0x20;
		}
		if(KeyBuff==3)
		{
         DAC0_Out_mV(1500);
         DAC1_Out_mV(1500);
			LED_PORT |= 0x40;
			DelayMs(50);
			LED_PORT &= ~0x40;
		}
		if(KeyBuff==4)
		{
         DAC0_Out_mV(2000);
         DAC1_Out_mV(2000);
			LED_PORT |= 0x80;
			DelayMs(50);
			LED_PORT &= ~0x80;
		}
	}
}



⌨️ 快捷键说明

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