專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

用EM78P153S給同事寫(xiě)流水燈

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2011年03月26日   【字體:
劉翔無(wú)聊弱智作品

基于EM78P153S的流水燈

無(wú)聊為龐師傅寫(xiě)于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;//清除狀態(tài)標(biāo)志位
P5CR=0x00;//置P5為輸出口
P6CR=0x00;//置P6為輸出口
PDCR=0x00;//禁止P5,P6下拉
ODCR=0x00;//禁止P6開(kāi)漏
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
   }   
}
關(guān)閉窗口

相關(guān)文章