导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→ucos中斷問題[a872156]

 *第16526篇: ucos中斷問題

  
楼 主:a872156 2003年9月25日23:36
 ucos中斷問題
我從ucos的網站下載到johnxliu的port,後來在電腦上RUN的時候出現了問題(編譯都過了,只是模擬的螢幕不會出現如example跑出亂數的畫面),後來johnxliu寄給我一份新的版本,我RUN起來以後也都沒問題了,我用johnxliu的port也都可以去跑以些自己寫的TASK,但是後來當我寫到中斷的時候卻發生了問題。
我用timer1去跑時間中斷,但是我是用mode
2自動載入的方式,所以很快的就會再發生中斷,我在中斷函示中依書本的指示在進入和離開的時候加上兩個函示OSIntEnter();OSIntExit();
但是很快的程序就崩潰了,我指細的去研究後發現問題出在OSIntExit();裡面有這幾行,
#pragma ASM
 CLR EA
    MOV SP, SaveSP
#pragma ENDASM
其中MOV SP,
SaveSP的SaveSP是0所以去跟改的SP上的堆疊結果程序就崩潰了,後來我仿照johnxliuISRTICK的的程式去撰寫加上了
if(OSIntNesting==1)
 {
#pragma ASM
  PUSH IE
  CLR  EA
  MOV  SaveSP, SP
#pragma ENDASM
        OSTCBCur->  OSTCBStkPtr=C_XBP;


if(OSIntNesting==0)
 {
  EA=0;
        C_XBP=OSTCBCur->  OSTCBStkPtr;
#pragma ASM
  MOV  SP, SaveSP
  MOV  SaveSP, #0
  POP  IE
#pragma ENDASM
 }
仍然不能動作,程式依然不能正常工作,所以想請問您是不是我還少加上了什麼東西,或是什麼沒有去修改到呢?
以下是我的中斷程序
void pwm_int(void) interrupt 3
{
OSIntEnter();
TR1=0;
if(SaveSP)
  return;
  
if(OSIntNesting==1)
 {
#pragma ASM
  PUSH IE
  CLR  EA
  MOV  SaveSP, SP
#pragma ENDASM
        OSTCBCur->  OSTCBStkPtr=C_XBP; /* OSTCBCur->  OSTCBStkPtr is free now, so it can be used to story the value of SP */
   }
if(P1_0)
 TH1=50;
else
 TH1=255-50;
P1_0=!P1_0;

TR1=1;
OSIntExit();

if(OSIntNesting==0)
 {
  EA=0;
        C_XBP=OSTCBCur->  OSTCBStkPtr;
#pragma ASM
  MOV  SP, SaveSP
  MOV  SaveSP, #0
  POP  IE
#pragma ENDASM

 }
}

謝謝大家百忙抽控回答一下,謝謝!

  
2楼:xuxx760716 2003年9月26日13:34
 你好,请往里进
你好:
    前些日子我用PIC做了一个项目,自己编写了一个任务核,但都是用汇编写的,移植费劲。现打算学习C,直接使用UCOSII,看了书,发现安装UCOSII时怎么需要BROND C编译器,你安装了吗?请指教。如有电话可联系。
     联系EMAIL:xuxx760716@sina.com.cn
  
3楼:a872156 2003年9月27日10:16
 我是用KEIL C
您好!
我是在做8051的題目,而我用的編譯器是keil C我也不知道要怎麼安裝brond C要怎麼使用,不好意思,如果您知道了,可否也E-MAIL一份給我,大家一起討論,謝謝您!不好意思沒辦法解決你的問題。
a872156@yahoo.com.tw
  
4楼:pioneerlee 2003年9月27日10:02
 我也想知道如何装BROND C编译器,谢
我也想知道如何装BROND C编译器,谢谢
联系MAIL:miroxuxu@163.com

>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:怎样在不改变原始波形的情况下消除方波顶上的白噪声?

[下一篇主题]:用usb口的电源会伤害usb口吗?当 方针器带负载时?