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

📄 test1.txt

📁 基于c8051f单片机的串口通信程序
💻 TXT
字号:
/********************************************************************* 
    *   文件名:    main.c 
    *   文件描述:  温控制系统之ADAM4018通信程序
	*   硬件描述:  单片机C8051F020,晶振22MHz 
    *   关联文件:
    *   创建人:     2008/12/10
    *   版本号:    1.0 
    *   修改记录:  
    *  
**********************************************************************/ 

#include <math.h>       /*数学函数库*/
#include <stdio.h>      /*标准输入输出函数*/
#include <absacc.h>     /*绝对地址访问函数*/
#include <intrins.h>    /*内部函数*/
#include "c8051F020.h"  /*C8051F020头文件*/

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;

#define BAUDRATE     9600 
#define SYSCLK       (22118400L)

#define LED1_ON  P6 &= 0xF7   //LED灯开关控制,低电平灯亮
#define LED1_OFF P6 |= 0x08
#define LED2_ON  P6 &= 0xFB
#define LED2_OFF P6 |= 0x04
#define LED3_ON  P6 &= 0xFD
#define LED3_OFF P6 |= 0x02
#define LED4_ON  P6 &= 0xFE
#define LED4_OFF P6 |= 0x01

sbit SW1 = P1^5;      //SW1 ='0' 开关1按下
sbit SW2 = P1^4;      //SW2 ='0' 开关2按下
sbit SW3 = P1^3;      //SW3 ='0' 开关3按下

sbit Trans485EN  =  P3^1;    //RS4850使能信号

/*函数声明*/
void OSCILLATOR_Init (void);
void PORT_Init (void);
void WDT_Init(void);

void main (void)
{
   
   WDT_Init();
   PORT_Init();                        // Initialize Port I/O
   OSCILLATOR_Init ();                 // Initialize Oscillator
  
   while (1)
   {
      if (SW1 == 0)                    // If switch depressed
      { 
         //LED1 = 1;                     // Turn on LED
		 P6 |= 0x08;
      }
	  else   
      {  
         //LED1 = 0;                     // Else, turn it off
		 P6 &= 0xF7;
      }                                	      
   }                                   // end of while(1)
}                                      // end of main()

void OSCILLATOR_Init (void)
{
   int i;                              // 软件定时常数

   OSCICN |= 0x80;                     // 使能丢失时钟检测
                                       // 外部晶振使用22.1184 MHz
   OSCXCN = 0x67;                      // 外部晶振设置
   for (i=0; i < 256; i++);            // 等待至少1ms
   while (!(OSCXCN & 0x80));           // 查询XTLVLD位是否位1
   OSCICN |= 0x08;                     // 使能外部晶振
   OSCICN &= ~0x04;                    // 内部晶振禁止
}

void PORT_Init (void)
{
   
   XBR0     = 0x0C;                     //CEX0引脚使能,UART0使能    00001100
   XBR1     = 0x0A;                     //T0,T1引脚使能             00001010
   XBR2     = 0x44;                     //UART1使能                  01000100
      //XBR2    &= ~0x02;                     //EMIFLE=0 外部存储器不使能  
      //XBR2    |= 0x40;                      // 交叉开关使能
   P0MDOUT |= 0x01;                     //设置TX为推挽输出   

   P1MDOUT &= 0xC7;                     //P1.5 P1.4 P1.3按键端口配置为数字输入
   P1      |= 0x38;                     
   
   P74OUT  &= 0xEF;                     //P6口低四位设置为漏极开路输出,控制LED灯

   P3MDOUT &=~0x02;                     //P3.1设置为漏极开路作为485通信使能
                                   
}

void WDT_Init(void)
{
    WDTCN = 0xde;                       // 禁止看门狗
    WDTCN = 0xad;
}

⌨️ 快捷键说明

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