全部内容 本站公告 购物咨询 付款确认 购物反馈 网站建议 贵宾交流 商品评论 文章评论 发新留言
标题: 〖kao〗单片机咨询(1)………… 付款确认
发送时间:2006/5/5 17:29:00 更新时间:2006/5/6 9:50:00
留言内容:
我买了198的单片机,编程遇到问题!!如下程序为何外部按键中断不能调用??
org 0000
ljmp start ;(1)为什么这里要放一条跳转指令呢,我们在后面解释把
org 0013h
ljmp ext1 ;(2)同上

org 0030h
start: clr p0.7 ;主程序开始
mov r7,#0ffh
setb ea ;cpu开放中断
setb ex1 ;允许外部中断1申请中断
setb it1 ;(3)设置外部中断1触发方式为跳变触发,原因在后面详细解释
lcall play1 ;调用初始状态显示子程序
ajmp start ;等待按键发出中断申请

ext1: clr ea ;进入中断,先关闭中断
lcall key_reader ;调用键识别子程序
pass: setb ea ;返回主程序之前先开中断
reti ;(4)中断返回指令,

key_reader:
mov a,p0 ;读入P0口的状态
anl a,#0fh ;屏蔽高四位
cjne a,#0dh,pass;如果a的内容不是00001101(表示不是k0按下),就退出中断
lcall del10ms ;否则,表示k0按下,调用10ms延时去抖
mov a,p1 ;再次读入p1口的内容
anl a,#0fh ;屏蔽高四位
cjne a,#0dh,pass ;如果a的内容不是00001101,就是抖动,退出中断
lcall play2 ;否则,确定按键按下,转数码显示程序
ret

play1: mov a,#0DDH ;让最右面的数码管显示0的子程序
mov p1,a
mov p3,#010h ;
ret

play2: inc r7 ;查表求段码,然后送到P0口的子程序,大家很熟了
mov a,r7
mov dptr,#tab
movc a,@a+dptr
mov p1,a
cjne a,#005H,next;如果没有显示到最后一个数字0,就继续查表显示
mov r7,#0ffh ;否则,重新从表头开始显示
next: ret

del10ms: mov r3,#0ffh ;10ms延时子程序
del1: mov r4,#0ffh
del2: djnz r4,del2
djnz r3,del1
ret

tab: db 0DDH,046H,054H,09CH,034H ;存放段码
db 024H,05DH,004H,01CH,005H
end
第1位zxq〖邹小琼〗说:[2006-5-6 9:50:00][59.40.71.100]
这个程序不是本站的程序,本站只是转载了这个程序,站长也看不很明白。
快速回复:

本站实事求是保留用户意见和问题!拒绝广告和灌水!但系统只显示最近2年或者最近2万次留言(约5000标题)!过期留言自动删除!重要内容请自行备份!不便之处请谅解!