专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

用EM78P153S给同事写流水灯

作者:佚名   来源:本站原创   点击数:  更新时间:2011年03月26日   【字体:
刘翔无聊弱智作品

基于EM78P153S的流水灯

无聊为庞师傅写于2011年3月21日

#include"EM78x153xx.h"
#define DISI()  _asm{disi}
#define ENI()  _asm{eni}
#define SLEP()  _asm{slep}
#define NOP()  _asm{nop}
#define WDTC() _asm{wdtc}
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned short ushort;
#define ledl PORT5
#define ledh PORT6
void delay(void)
{uchar i,j;
for(j=0;j<200;j++)
for(i=0;i<200;i++)NOP();
}
const ushort rundata[16]={0xfffe,0xfffc,0xfff8,0xfff0,
      0xffe0,0xffc0,0xff80,0xff00,
      0xfe00,0xfc00,0xf800,0xf000,
      0xe000,0xc000,0x8000,0x0000};
void main(void)
{uchar i,j,k;
uint run;
WDTC();//清看门狗
DISI();//禁止中断
STATUS=0X00;//清除状态标志位
P5CR=0x00;//置P5为输出口
P6CR=0x00;//置P6为输出口
PDCR=0x00;//禁止P5,P6下拉
ODCR=0x00;//禁止P6开漏
PHCR=0x00;//禁止P6上拉
for(;;)
for(i=0,k=0;i<16;i++,k--)
  {run=rundata[i];
  for(j=0;j<k;j++)
    {ledl=run;
    ledh=(run>>8);
    delay();
    }
  }
}
void _intcall interrupt(void) @ int 
{
  // Write your code (inline assembly or C) here
  
  //restore ACC,R3,R4
  _asm
   {
      reti            //tell Compiler to recover common registers here
      SWAP 0X1F    ;restore A
      SWAPA 0X1F
   }
}
void _intcall interrupt_l(void) @ 0x08:low_int 0
{
   _asm 
   {
      //save A --> 0x1F 
      MOV 0X1F,A   ;backup A to 0x1F
   }   
}
关闭窗口

相关文章