资讯详情

单片机汇编实验三:外部中断实验

实验要求:

由AT89S52内部定时器0,按方式1工作,即作为16位定时器使用每0.05秒T1溢出中断一次。P1口的P1.0~P1.8分别接8个。要求编写程序模拟一时序控制装置。开机后第一秒钟L1,L8亮,第二秒钟L2,L7亮,第三秒钟L3,L6亮,第四秒L4,L5亮,第五秒L3,L6亮,第六秒L2,L7亮,第七秒L1,L8亮,第八秒L1,L3,L5,L7亮,第九秒L2,L4,L6,L8亮,第十秒全亮,第十一秒全灭。然后再从头循环。

由生成外部中断信号,当任意键按下时,为外部中断请求信号,此时L3,L4, L5,L6亮,持续时间为5秒。 //This is the third program of the homework; //Name: WQ D: 2013\2\14 //In this program we used Intterput; ORG 0000H //****无条件转移指令******* LJMP MAIN //LJMP 长转移指令 65535 (双字节) ORG 0003H //0003H 中断程序I0入口地址 LJMP WINTT0 //AJMP 绝对转移 ORG 000BH //000BH 程序T0入口地址 LJMP WT0 //SJMP 短转移 -128——127 // ORG 001BH //001BH 计时器程序T1入口地址 JMP 变址转移 JMP @A+D // LJMP WT1 //另外只要程序段的空间能合理分配不冲突就能随便调用 ORG 0050H MAIN:MOV DPTR,#TABLE MOV R1,#11 //R1做一个 查表用 CLR A //将A清零,用来寻址 MOV R2,A //另一个计数器用来加减 MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H MOV R3,#20 //R3做一个计数器 SETB EA //开总中断 SETB ET0 //允许计时器 SETB TR0 //开启计时器0 // SETB TR1 //开启计时器1 SETB IT0 //边沿触发方式 SETB EX0 //允许外部中断0 MOV P0,#0FFH OK1: MOV C,P3.4 JNC K MOV C,P3.5 JNC KAISHI MOV C,P3.6 JNC KAISHI MOV C,P3.7 JNC KAISHI SJMP OK1 KAISHI:CLR P3.2 SETB P3.2 SJMP OK1

//外部中断程序的入口 ORG 0AA0H WINTT0:PUSH TH0 PUSH TL0 CLR TR0 //关闭定时器0 MOV P1,#3CH CALL DELAY1 POP TL0 POP TH0 SETB TR0 R ORG 0100H //计时器0程序 WT0: MOV TH0,#4CH //计时器0置数 MOV TL0,#00H DJNZ R3,RETN //1秒钟到来了 MOV R3,#20 MOV A,R2 // MOVC A,@A+DPTR MOV P1,A INC R2 //指针加一 DJNZ R1,RETN //不满足调见返回主程序继续计时 MOV R1,#11 //循环之后置数 MOV R2 ,#0 //循环之后清零 RETN:RETI //中断子程序的返回指令

//延时函数 ORG 0200H delay1:MOV R7,#0FFH DELY1:MOV R6,#0AAH DELY2:MOV R0,#024H DELY3: NOP//MOV P1,#00H DJNZ R0,DELY3 DJNZ R6,DELY2 DJNZ R7,DELY1 RET TABLE: 7EH,0BDH,0DBH,0E7H,0DBH DB 0BDH,7EH,0AAH,55H,00H,0FFH //十六进制数前面要加零 END //主程序结束指令

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

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