导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[献]初学者:我的INT0中断为什么 无效? 



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毫秒
    ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:7276毫秒 查询6次