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

📄 huhu.c

📁 新华龙c8051f020单片机 串口调试示例程序
💻 C
字号:
#include <c8051f020.h>                // SFR声明
#include <stdio.h>
#include <INTRINS.H>

//C8051F020的16位SFR定义

sfr16 DP       = 0x82;                // 数据指针
sfr16 TMR3RL   = 0x92;                // 定时器T3重装值
sfr16 TMR3     = 0x94;                // 定时器T3计数器
sfr16 ADC0     = 0xbe;                // ADC0数据
sfr16 ADC0GT   = 0xc4;                // ADC0大于窗口
sfr16 ADC0LT   = 0xc6;                // ADC0小于窗口
sfr16 RCAP2    = 0xca;                // 定时器T2捕捉/重装
sfr16 T2       = 0xcc;                // 定时器T2
sfr16 RCAP4    = 0xe4;                // 定时器T4捕捉/重装
sfr16 T4       = 0xf4;                // 定时器T4
sfr16 DAC0     = 0xd2;                // DAC0数据
sfr16 DAC1     = 0xd5;                // DAC1数据


#define BAUDRATE     115200            // UART波特率(bps)
#define SYSCLK       24000000          // 系统时钟频率(Hz)

//MAX125功能口定义
#define MAX125_CS      P2.0;
#define MAX125_CON     P2.1;
#define MAX125_RD      P2.2;
#define MAX125_WR      P2.3;
#define MAX125_INT     P2.4;
#define MAX125_CLK     P2.5;

//DAC8164功能口定义
#define DAC8164_LDAC   P3.0;
#define DAC8164_ENAB   P3.1;
#define DAC8164_A1     P3.2;
#define DAC8164_SYNC   P3.3;
#define DAC8164_SCLK   P3.4;
#define DAC8164_DIN    P3.5;



#define TIMER2H        0xc4           //10ms
#define TIMER2L        0x00
#define TIMER_NUM      8



   
#define MAX_RAW_VALUE     1024


struct MY_TIMER{
	unsigned char enable;
	unsigned int  count;
	unsigned int  length;
	unsigned char flag;
};


void SYSCLK_Init (void);
void PORT_Init (void);
void UART0_Init (void);
void UART1_Init (void);
void MAX125_Init (void);
void DAC8164_Init (void);
void Timer3_Init (int counts);
void MAX125_ISR (void);
void DAC8164_ISR (void);



//主程序
void main (void)
{
WDTCN = 0xde;                          // 禁止看门狗
WDTCN = 0xad;
SYSCLK_Init ();                        // 初始化振荡器
PORT_Init ();                          // 初始化数据交叉开关和通用I/O口
UART0_Init ();                         // 初始化UART0
Timer3_Init (SYSCLK/SAMPLE_RATE);      // 初始化Timer3 
ADC7934_Init ();                       // 初始化ADC7934
while (1) {
Timer0_Delay (100); //延时100ms
}
ADC7934_ ISR (void); 
}
//主程序初始化
//系统时钟初始化
void SYSCLK_Init (void) 
{
int i;                               //延时计数器
OSCXCN = 0x67;                      //启动外部振荡器
for (i=0;i<256;i++) ;                //等待振荡器启动
while (!(OSCXCN & 0x80)) ;           //等待晶体振荡器稳定
OSCICN = 0x88;                       //选择外部振荡器为系统时钟源并使能丢失时钟检测器
}

//I/O口初始化,配置数据交叉开关和通用I/O口
void PORT_Init (void)
{
XBRO = 0x06;
XBR1 = 0x80;
XBR2 = Ox40;                        // 使能数据交叉开关和弱上拉
P0MDIN = 0x00;                      // enable TX0 as a push-pull output
P1MDIN = 0x88;                      // P2口设为推挽方式
P2MDOUT= 0x00;                      // P2口设为推挽方式
P3MDOUT= 0x00;
P74OUT = 0X0F;                      // P4,P5口设为推挽方式                     
}


unsigned char xdata *ADC7934;       // 定义ADC7934端口指针 
unsigned char xdata *ADC7934data;   // 定义ADC7934数据缓冲指针
void ADC7934_PORT (void)
{

}
//UART0配置
void UART0_Init (void)
{
   SCON0   = 0x50;                     // UART0工作模式1, 8-bit UART, 使能RX
   TMOD    = 0x20;                     //定时器 1, 模式 2, 8-bit 重装载
   TH1    = -(SYSCLK/BAUDRATE/16);     //设定定时器1为重装载模式
   TR1    = 1;                         // 启动Timer1
   CKCON |= 0x10;                      // Timer1使用系统时钟
   PCON  |= 0x80;                      // 禁止UART0的波特率/2
   TI0    = 1;                         // Indicate TX0 ready
}

//UART0配置
void UART1_Init (void)
{
   SCON0   = 0x50;                     // UART0工作模式1, 8-bit UART, 使能RX
   TMOD    = 0x20;                     //定时器 1, 模式 2, 8-bit 重装载
   TH1    = -(SYSCLK/BAUDRATE/16);     //设定定时器1为重装载模式
   TR1    = 1;                         // 启动Timer1
   CKCON |= 0x10;                      // Timer1使用系统时钟
   PCON  |= 0x80;                      // 禁止UART0的波特率/2
   TI0    = 1;                         // Indicate TX0 ready
}




void Timer3_Init (int counts)
{
   TMR3CN = 0x02;
   TMR3RL  = -counts;
   TMR3    = 0xffff;
   EIE2   &= ~0x01;
   TMR3CN |= 0x04;
}

⌨️ 快捷键说明

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