8051

#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        24000000UL

//==========================================================================


/*************  本地常量声明    **************/


/*************  IO口定义    **************/

/*************  本地变量声明    **************/


/*************  本地函数声明    **************/

void  delay_ms(u8 ms);

/****************  外部函数声明和外部变量声明 *****************/


/******************** 主函数 **************************/
void main(void)
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x00;   P0M0 = 0xff;   //设置为推挽输出
    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;   //设置为准双向口

    P40 = 0;        //LED Power On

    while(1)
    {
       
        P10 = 0;        //LED On
        delay_ms(250);
        P10 = 1;        //LED Off

        P11 = 0;        //LED On
        delay_ms(250);
        P11 = 1;        //LED Off

        P12 = 0;        //LED On
        delay_ms(250);
        P12 = 1;        //LED Off

        P13 = 0;        //LED On
        delay_ms(250);
        P13 = 1;        //LED Off

        P14 = 0;        //LED On
        delay_ms(250);
        P14 = 1;        //LED Off

        P15 = 0;        //LED On
        delay_ms(250);
        P15 = 1;        //LED Off

        P16 = 0;        //LED On
        delay_ms(250);
        P16 = 1;        //LED Off

        P17 = 0;        //LED On
        delay_ms(250);
        P17 = 1;        //LED Off
        }
       }

//========================================================================
// 函数: void  delay_ms(unsigned char ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注: 
//========================================================================
void  delay_ms(u8 ms)
{
     u16 i;
     do{
          i = MAIN_Fosc / 6000;
          while(--i);
     }while(--ms);
}

本例程基于AI8051U为主控芯片的实验箱进行编写测试.

使用Keil C251编译器,Memory Model推荐设置XSmall模式,默认定义变量在edata,单时钟存取访问速度快。

edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间。

程序使用P0口来演示跑马灯,输出低驱动。

下载时, 选择时钟 24MHZ (用户可自行修改频率).

正在检测目标单片机 ... 
  单片机型号: STC8051U-34K64

当前芯片的硬件选项为:
  . 系统ISP工作频率: 24.000MHz
  . 内部IRC振荡器的频率: 40.000MHz
  . 掉电唤醒定时器的频率: 36.225KHz
  . 振荡器放大增益使能
  . 用户EEPROM大小被设置为 1 K
  . P3.2和P3.3与下次下载无关
  . 上电复位时增加额外的复位延时
  . 复位引脚仍为复位脚
  . 检测到低压时不复位,可产生低压中断
  . 低压检测门槛电压 : 2.00 V
  . 上电复位时,硬件不启动内部看门狗
  . 上电自动启动内部看门狗时的预分频数为 : 256
  . 空闲状态时看门狗定时器停止计数
  . 下次下载用户程序时,将用户EEPROM区一并擦除
  . 下次下载用户程序时,没有相关的端口控制485
  . 下次下载时不需要校验下载口令
  . 内部参考电压: 1185 mV (参考范围: 1100~1300mV)

  单片机型号: STC8051U-34K64

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐