简简单单测试用户系统区与用户程序的切换
简简单单测试用户系统区与用户程序的切换,为后续的IAP升级做准备。串口每收到一个字节数据进行一次切换。#include "..\comm\AI8051U.h"#include "stdio.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
#define MAIN_Fosc 22118400L //定义主时钟(精确计算115200波特率)
//==========================================================================
#define Baudrate1 (65536 - MAIN_Fosc / 115200 / 4)
#define UART1_BUF_LENGTH 128
//==========================================================================
//#defineSys_code
#defineUser_code
/*************本地常量声明 **************/
/*************IO口定义 **************/
/*************本地变量声明 **************/
u8TX1_Cnt; //发送计数
u8RX1_Cnt; //接收计数
bit B_TX1_Busy; //发送忙标志
u8RX1_Buffer; //接收缓冲
/*************本地函数声明 **************/
void UART1_config(u8 brt); // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
void PrintString1(u8 *puts);
/****************外部函数声明和外部变量声明 *****************/
/******************** 主函数 **************************/
void main(void)
{
WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXSFR(); //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
UART1_config(2); // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
EA = 1; //允许全局中断
#ifdefSys_code
PrintString1("程序运行再用户系统区!\r\n");//UART1发送一个字符串
#else
PrintString1("程序运行在工作区!\r\n");//UART1发送一个字符串
#endif
while (1)
{
if((TX1_Cnt != RX1_Cnt) && (!B_TX1_Busy)) //收到数据, 发送空闲
{
#ifdefSys_code
IAP_CONTR = 0X20;
#else
IAP_CONTR = 0X28;
#endif
SBUF = RX1_Buffer;
B_TX1_Busy = 1;
if(++TX1_Cnt >= UART1_BUF_LENGTH) TX1_Cnt = 0;
}
}
}
其实之前用8H8K64U已经完成了4G物联网的远程升级。使用8H8K64U需要进行中断的偏移操作,这次主要是验证下AI8051的用户系统区这个功能好不好使用。 大道至简{:4_250:} 看代码,好像每次都执行IAP_CONTR = 0X28;是不是呢?请赐教 xxkj2010 发表于 2025-3-13 08:31
看代码,好像每次都执行IAP_CONTR = 0X28;是不是呢?请赐教
生成了两次HEX。 wnagming 发表于 2025-3-13 07:24
不明白,这不是宏定义吗?怎么切换的呢?
生成了两次的HEX文件,下载的 小坤 发表于 2025-3-13 08:34
生成了两次的HEX文件,下载的
这两个HEX文件分别下载到用户系统区和用户程序区? xxkj2010 发表于 2025-3-13 08:40
这两个HEX文件分别下载到用户系统区和用户程序区?
EN 挺不错的,手头有8051,以后找个时间玩玩
页:
[1]