yyj679 发表于 2013-5-25 12:26:15

救命,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

hyghyg1234 发表于 2013-5-25 12:29:37

不懂BASCOM,帮顶

hyghyg1234 发表于 2013-5-25 12:30:20

说说的思路,看看能不能帮上

yyj679 发表于 2013-5-25 12:46:53

hyghyg1234 发表于 2013-5-25 12:30 static/image/common/back.gif
说说的思路,看看能不能帮上

就是bascom的基本运用,中断响应,主循环显示

yyj679 发表于 2013-5-26 17:20:48

怎么2天了,没人知道,嗨,有那么难?

AAAL 发表于 2013-5-26 19:13:57

{:3_59:}学习中。。。

Post By ID:maxims
页: [1]
查看完整版本: 救命,BASCOM下,M8的ICP1捕获不肯“捕获”