打印

[典范教程] MA82G5BXX仿真口P44,P45切换成IO口

[仿制链接]
1084|1
跳转到指定楼层
楼主
留意切换时要在P页操作。
  1. #include <REG_MA82G5B32.H>

  2. void delay(unsigned int t)
  3. {
  4.     unsigned int data i;
  5.     while(t--)
  6.     {
  7.         for(i=0;i<500;i++)
  8.         {
  9.             ;
  10.         }
  11.     }
  12. }


  13. /***********************************************************************
  14.   * Function:Page_P_SFR_Write
  15.   *         
  16.   * Description:  写P页寄存器
  17.   *         
  18.   * Input:     SFR,P页SFR的地址,  dat,要写入的数据
  19.   *
  20.   * Output:    None
  21.   *
  22.   * Return:    None
  23.   **********************************************************************/

  24. void Page_P_SFR_Write(unsigned char SFR,unsigned char dat)
  25. {
  26.     bit EA_tmp = EA;
  27.     EA = 0;
  28.     IFADRH=0X00;
  29.     ISPCR |= 0x80;
  30.     IFMT = 4;
  31.     IFADRL = SFR;
  32.     IFD = dat;
  33.     SCMD = 0X46;
  34.     SCMD = 0XB9;
  35.     IFMT = 0;
  36.     ISPCR &= 0x7f;
  37.     IFADRH = 0XFF;
  38.     EA = EA_tmp;
  39. }

  40. /***********************************************************************
  41.   * Function:Page_P_SFR_Read
  42.   *         
  43.   * Description:  读P页寄存器
  44.   *         
  45.   * Input:     SFR,P页SFR的地址
  46.   *
  47.   * Output:    None
  48.   *
  49.   * Return:    读到的P页SFR寄存器的值
  50.   **********************************************************************/

  51. unsigned char Page_P_SFR_Read(unsigned char SFR)
  52. {
  53.     bit EA_tmp = EA;
  54.     EA = 0;
  55.     IFADRH=0X00;
  56.     ISPCR |= 0x80;
  57.     IFMT = 5;
  58.     IFADRL = SFR;
  59.     SCMD = 0X46;
  60.     SCMD = 0XB9;
  61.     IFMT = 0;
  62.     ISPCR &= 0x7f;
  63.     IFADRH = 0XFF;
  64.     EA = EA_tmp;
  65.     return IFD;
  66. }


  67. void main(void)
  68. {
  69.     unsigned char tmp;
  70.    
  71.     tmp=Page_P_SFR_Read(0x4c);      //读DCON0(P页寄存器0X4C)
  72.     Page_P_SFR_Write(0x4c,tmp&0xFC);//切换P44,P45为IO。由于P44,P45默以为仿真口,
  73.                                     //要做为一般IO时写DCON0, 清零bit0  OCDE=0; P44,P45,P47为IO
  74.    
  75.     while(1)
  76.     {
  77.         P44=~P44;
  78.         P45=~P45;
  79.         delay(1000);
  80.     }
  81. }
仿制代码
沙发
 楼主 | 2019-1-23 11:10 | 只看该作者
咱们要留意:
由于切换成GPIO之后,就无法进行仿真,如持续仿真,keil就会提示相应的过错。
假如运用者没有用U1 Writer,只要Megawin ICE仿真器,需求照下列过程,才干康复:
1、先断电
2、按住Reset不放
3、上电
4、履行ICPProgrammer,不载入任何程序,直接按下“更新方针芯片”
5、铺开Reset。
扫描二维码,随时随地手机跟帖
您需求登录后才能够回帖 登录 | 注册

本版积分规矩

我要发帖 投诉主张 创立版块 请求版主

快速回复

您需求登录后才能够回帖
登录 | 注册
高档形式

论坛热帖

在线客服 快速回复 回来顶部 回来列表