|
本帖最后由 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
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|