c8051f120学习进程中_(1)

原文地址:c8051f120学习进程中_(1) 作者:shang2305

120的板子做好了,一直也没有去学习,虽然现在在比赛准备期间,但是自己忙里偷闲吧,找时间学习下。

 

第一个简单程序

#include <c8051f120.h>                   

void delay(  int x  )
{
 unsigned char i;
 while(x--)
 for(i=0;i<255;i++);
}

//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------
void PORT_Init (void);
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void) {
   // disable watchdog timer
   WDTCN = 0xde;      //关看门狗
   WDTCN = 0xad;
   SFRPAGE = CONFIG_PAGE;          // Switch to configuration page
   PORT_Init ();        //端口初始化
   while(1)
  {
   P0=~P0;
   P1=~P1;
   P2=~P2;
   P3=~P3;
   P4=~P4;
   P5=~P5;
   P6=~P6;
   P7=~P7;
   delay(600);
   }

}
//------------------------------------------------------------------------------------
// PORT_Init
//------------------------------------------------------------------------------------
//
// Configure the Crossbar and GPIO ports
//
void PORT_Init (void)
{
   XBR2    = 0x40;       //使能交叉开关 和弱上拉  Enable crossbar and weak pull-ups
   P0MDOUT |= 0xff;                    
   P1MDOUT |= 0xff;
   P2MDOUT |= 0xff;          // enable P0-P7 as push-pull output
   P3MDOUT |= 0xff;
   P4MDOUT |= 0xff;
   P5MDOUT |= 0xff;
   P6MDOUT |= 0xff;
   P7MDOUT |= 0xff;
  
}

 

从main函数可以看出,本程序过程时

1) 关看门狗定时器(WDT)

这是c8051f单片机与51单片机不同之一 在默认的情况下单片机的看门狗是打开的

 WDT由WDTCN寄存器管理的

 WDTCN=0XDE;//禁止软件看门狗定时器

 WDTCN=OXAD;

 

 WDTCN=0XA5;定时器使能、复位

 还要对应有时间限制

2)SFR寄存器配置

特殊功能寄存器(SFR) 控制着C8051F单片机的资源 如何去利用

SFR运用SFRPAGE寄存器选择相应的页号

SFRPAGE=CONFIG_PAGE;这句话的意思是选择系统与端口的配置页

3)端口配置

XBR2=0X40;//交叉开关控制端口0 1 2 3 的引脚使能  而对程序中4 5 6 7 没有影响, 4--7 引脚都可以作通用I/0

4)while程序

PXMDOUT=0XFF; 为推免输出

PXMDOUT=0X00; 为漏极开路输出

 

补充知识:

所有端口引脚的缺省方式均为漏极开路。每个端口引脚都有一个内部弱上拉部件,在缺省情况下该上拉器件被使能,在引脚与VDD 之间提供阻性连接(约100 k?)。弱上拉部件可以被总体禁止,通过向弱上拉禁止位(WEAKPUD,XBR2.7)写‘1’实现。当任何引脚被驱动为逻辑‘0’时,弱上拉自动取消;即输出引脚不能与其自身的上拉部件冲突。对于端口1 的引脚,将引脚配置为模拟输入时上拉部件也可以被明确禁止。
推挽方式,向端口数据寄存器中的相应位写逻辑‘0’将使端口引脚被驱动到GND,写逻辑‘1’将使端口引脚被驱动到VDD。

漏极开路方式,向端口数据寄存器中的相应位写逻辑‘0’将使端口引脚被驱动到GND,写逻辑 ‘1’将使端口引脚处于高阻状态。

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值