资讯详情

单片机外中断汇编语言和C语言程序

以下两个程序效果相同,一个使用汇编语言,一个使用C语言,从仿真效果看,c语言程序运行比较流畅。 两个外中断跑马灯汇编语言程序 ORG 0000H LJMP MAIN ORG 0003H LJMP WZD0 ORG 0013H LJMP WZD1 ORG 0040H WZD0: MOV D,#0220H MOV R3,#42D CB0: CLR A MOVC A,@A+TR MOV P1,A INC DPTR LCALL DELAY2 DJNZ R3,CB0 R WZD1: MOV DPTR,#0220H MOV R3,#42D CB1: CLR A MOVC A,@A+DPTR MOV P2,A INC DPTR LCALL DELAY1 DJNZ R3,CB1 RE ORG 0150H MAIN: MOV P1,#00H MOV P2,#00H SETB EA SETB IT0 SETB EX0 CLR PX0 SETB IT1 SETB EX1 SETB PX1 : MOV DPTR,#0270H MOV R4,#17D DD: CLR A MOVC A,@A+DPTR MOV P0,A INC DPTR LCALL DELAY1 DJNZ R4,DD SJMP ST DELAY1: MOV R7,#00H DD1: MOV R6,#00H DD2: MOV R5,#01H DJNZ R5,$ DJNZ R6,DD2 DJNZ R7,DD1 RET DELAY2: MOV R7,#00H DDD1: MOV R6,#00H DJNZ R6,$ DJNZ R7,DDD1 RET ORG 0220H 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 DB 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 DB 0x18,0x24,0x42,0x81,0x00,0x81,0x42,0x24,0x18 DB 0x18,0x24,0x42,0x81,0x00,0x81,0x42,0x24,0x18 DB 0x18,0x00,0x3c,0x00,0x7e,0x00,0xff,0x00 ORG 0270H DB 0xfe,0xfc,0xf8,0xe0,0xe0,0xc0,0x80,0x00 DB 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff, 0x00 END 两个外中断跑马灯C语言程序 #include<reg51.h> int code yu[]={ 0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, 0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01, 0x00,0x18,0x24,0x42,0x81,0x00,0x81,0x42,0x24,0x18, 0x00,0x18,0x24,0x42,0x81,0x00,0x81,0x42,0x24,0x18, 0x00,0x18,0x00,0x3c,0x00,0x7e,0x00,0xff,0x00,0x00, 0x00 }; int code yu1[]={ 0xfe,0xfc,0xf8,0xe0,0xe0,0xc0,0x80,0x00, 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff, 0x00}; void delay(int ms) { while(ms--) { int i; for(i=0;i<120;i++); } } void ddd() interrupt 0 { int k; for(k=0;k<47;k++) { P2=yu[k]; delay(100); } } void dd() interrupt 1 { int k; for(k=0;k<48;k++) { P1=yu[k]; delay(300); } P1=0x00; } void main() { int n; IT0=0; EX0=1; PX0=1; IT1=0; EX1=1; PX1=0; EA=1; P1=0x00; P2=0x00; while(1) { for(n=0;n<17;n++) { P0=yu1[n]; delay(100); } }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台