劉翔無聊弱智作品 基于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 } }