救命,BASCOM下,M8的ICP1捕获不肯“捕获”
本帖最后由 yyj679 于 2013-5-25 12:43 编辑今天遇到超郁闷的事,简简单单的一个ICP1捕获不但硬件调不出,死活读不到捕获值Capture1,没想到连BASCOM的仿真也不给力,仿真中Icr1h、Icr1l始终为零。测试程序如下,恳请各位指教。先谢过。(试过BASCOM1.11.9安装版,BASCOM1.11.9绿色汉化版)
'$sim
'---------------ICP1捕获测试.bas-------------------
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
'-------【定义PB口】 -------------
' 76543210
Ddrb =&B11111110
Portb = &B11111110
'PB0----施ICP捕获作用
'------- 配置M8定时器1 的输入捕获 -------
Config Timer1 = Timer , Prescale = 1 , Capture Edge = Falling , Noice Cancel = 1
'Capture Edge: Falling=下降沿捕获, Rising=上升沿捕获
'Noice Cancel: 1=采用消噪;0=不用消噪
On Icp1 Icp1_isr
Dim Icp1_flag As Bit
Dim Buhuo As Word , I As Word
'Enable Capture1 '允许输入捕获中断
Enable Interrupts '开放中断,即允许CPU中断
Enable Icp1 '允许输入捕获中断
Timer1 = 0
Start Timer1 '启动定时器1
Do
If Icp1_flag = 1 Then
Print I ; "-Buhuo=" ; Buhuo ; "(" ; Icr1h ; "," ; Icr1l ; ")"
Icp1_flag = 0
End If
Loop
End
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 中断处理、子程序 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Icp1_isr: 'T/C1中断服务子程序入口
Buhuo = Capture1 '读取Capture1的计数值,即捕获值
'Buhuo = Icr1h * 16
'Buhuo = Buhuo + Icr1l
I = I + 1
Icp1_flag = 1
Timer1 = 0
Return
不懂BASCOM,帮顶 说说的思路,看看能不能帮上 hyghyg1234 发表于 2013-5-25 12:30 static/image/common/back.gif
说说的思路,看看能不能帮上
就是bascom的基本运用,中断响应,主循环显示 怎么2天了,没人知道,嗨,有那么难? {:3_59:}学习中。。。
Post By ID:maxims
页:
[1]