No.10220 作者:献 邮件:6756754@ghr.net ID:5563 登陆:2次 QQ:4564564 文章数:57篇 最后登陆IP:61.168.74.43 最后登陆:2003/8/10 16:52:42 注册:2001/8/15 8:14:00 财富:210 发帖时间:2002/8/20 14:33:00 发贴者IP:218.29.84.67 标题:献:初学者:我的INT0中断为什么 无效? 请朋友们看看是不是程序错了,错在那里 先谢谢 摘要:No.10220初学者:我的INT0中断为什么 无效? 请朋友们看看是不是程序错了,错在那里 先谢谢 该程序是一个计数器的程序,显示部分正常,就是在P3.2(INT0)输入100Hz方波后,所显示的数 据没有任何反应,请朋友们看看 该程序错在那里了,,请朋友们指点 谢谢 ;++++++++++++++++++++计数器程序+++++++++++++ ;功能:计数器 ; 3位LED显示 ;============================================== ;硬件 ;1处理器采用AT89C2051 ;2 显示采用LED/3位 (两 位整数,一位小数) ;======================================================= ;资源按排 ;T0 用于产生采样定时 ;T1 用于显示刷新控制 ;INT0 用于外中断(中断方式为:脉冲方式) ;P0口输出BCD数据 ;P3输出位驱动 ;--------------------------------------------- ;第0组通用寄存器主要作为T0定时与计数结果写入控制 ;第1组通用寄存器主要作为显示用 ;第三组通用寄存器主要作为计数 ;================================================ ;赋值区(位区) ADYCW BIT 00H ;该位为1,计数已经溢出 ;------------------------------------------- ;赋值区(数据存储器) VSB EQU 7FH ;十位 VGB EQU 7EH ;个位 VXB EQU 7DH ;小数 XSSXB EQU 67H ;显示刷新定时 ;------------------------------------------------ ADXB EQU 12H ;计数结果小数存储器 ADGB EQU 11H ;计数结果个位存储器 ADSB EQU 10H ;计数结果十位存储器 ;================================================= ORG 0000H AJMP KS ;去主程序 ORG 0003H ;INT0外中断入口 AJMP ZD0;INT0中断处理(计数) ORG 000BH ;T0中断入口 AJMP DS0;T0中断处理(产生主时钟) ORG 001BH ;T1中断入口 AJMP DS1;T1中断处理(显示刷新) ;------------------------------------------- KS: ;空操作(起动稳定部分) NOP NOP ;主程序(所有数据初始化部分0 MOV VSB,#0 ;初始 MOV VGB,#0 MOV VXB,#0 MOV ADXB,#0 ;AD结果小数存储器 MOV ADGB,#0 ;AD结果个位存储器 MOV ADSB,#0 ;AD结果十位存储器 ;主程序(功能,控制设置部分) MOV SP,#30H ;设置堆栈 MOV P3,#0FFH ;屏蔽显示地址 MOV P1,#0FFH ;屏蔽显示数据 MOV XSSXB,#10 ;设置显示刷新时间 MOV R5,#222 ;时钟(采样时间)与T0配合 MOV R6,#30 ;时钟(采样时间)与T1配合 MOV DPTR,#BCDB ;将BCD码表装入数据指针(DPTR) SETB RS0 ;设置第二组通用寄存器 MOV R0,#VXB ;将需要显示的数据起始地址装入 MOV R2,#1 ;设置显示位的起始位标志 CLR RS0 ;恢复 MOV TL0,#106 ;T0定时值设置为150(初值150) MOV TH0,#106 MOV TL1,#6 ;T1刷新时间 MOV TH1,#6 MOV IE,#8BH MOV IP,#1 ;T0,INT0中断优先 MOV TMOD,#22H ;T0,T1定时方式设置为2 MOV TCON,#53H ;起动T0,T1定时器,将INT0触发方式,设置为脉冲方式 AJMP $ ;死循环 ;设置结束 ;=========================================================================== DS0: ;时钟与AD数据存储处理子程序 PUSH PSW PUSH ACC MOV PSW,#0 ;原始 DJNZ R5,DS0C ;不等0出 MOV R5,#222 ;333毫秒 DJNZ R6,DS0C MOV R6,#30 ;999毫秒   ......
>>返回讨论的主题
|