智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6247|回复: 8
打印 上一主题 下一主题

图像采集程序场中断可以进,行中断进不去?

[复制链接]

9

主题

44

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3094
QQ
威望
873
贡献
1877
兑换币
184
注册时间
2011-10-16
在线时间
172 小时
跳转到指定楼层
1#
发表于 2012-4-4 11:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
本帖最后由 带着飞翔的翅膀 于 2012-4-4 11:47 编辑
  1. #include <hidef.h>         /* common defines and macros */
  2. #include "derivative.h"      /* derivative-specific definitions */
  3. #include <MC9S12XS128.h>

  4. #define ROW 37                  //采集到的矩阵像素点 37*108
  5. #define COLUMN  108

  6. //#define  THERSHOLD 0x20    //设置阈值为3
  7. unsigned char hang[]={26,28,30,32,34,36,38,40,43,46,49,52,
  8.                                         55,58,61,64,67, 72,77,83,89,95,101,107,113,119,
  9.                                     125,133,141,150,159,170,181,193,205,217,230
  10.                                     };                 //采集的行数

  11. //unsigned char Buffer_Image[ROW][COLUMN];        //缓冲矩阵
  12. unsigned char Image_data[ROW][COLUMN]={0};     //图像数据
  13. unsigned  char VSYN_C=0;
  14. unsigned int m=0;
  15. unsigned int Line=0;

  16. //时钟初始化
  17. void PLL_Init(void)
  18. {       CLKSEL=0x00;    //时钟选择寄存器,选定时钟来自外部晶振,关闭锁相环
  19.          PLLCTL_PLLON=1;   //  锁相环电路打开
  20.          SYNR=0x40 | 0x04;       //设置锁相环参数   Fvco=2*Fosc*(SYNR+1)/(REFDIV+1)==80MHZ;
  21.          REFDV=0x80 |0x01;
  22.          POSTDIV=0;        //Fvco=Fpll         so Fbus=Fpll/2=40MHZ;
  23.         _asm(nop);            //  等待锁相环稳定
  24.         _asm(nop);
  25.         while(!(CRGFLG_LOCK)==1);  // LOCK=1  标志时钟频率已经稳定
  26.         CLKSEL_PLLSEL=1;           //选定时钟来自锁相环
  27. }
  28. //定时器初始化
  29. void ECT_Init(void)
  30. {      TIOS=0x00;    //设置定时器通道0,1为输入捕捉
  31.          TCTL4=0x09;    //通道0捕捉上升沿,通道1捕捉下降沿
  32.         TSCR1=0x80; //定时器使能
  33.         TFLG1=0xFF;    //  清除标志位
  34.         TIE=0x02;       // 开场中断,关闭行中断
  35.         
  36. }
  37. //串口通信初始化
  38. void SCI_Init(void )
  39. {         SCI0BD=(byte)40000000/16/9600;   //波特率Baut rate= BUScolck/(16*SCI0BD)=9600bps
  40.             SCI0CR1=0;    //正常8位模式,无奇偶校验
  41.             SCI0CR2=0x2c;     //发送允许       接受中断允许
  42. }
  43. //串口传输程序
  44. void SCI_Trasmit(unsigned char Sendchar)
  45. {    while(!(SCI0SR1&0x80));          //SCI0SR1_RDRF  标志位
  46.        SCI0DRH=0;
  47.        SCI0DRL=Sendchar;
  48. }
  49. //图像数据处理
  50. void Process()
  51. {        unsigned char i,j;
  52.           for(i=0;i<ROW;i++)
  53.           {       for(j=0;j<COLUMN;j++)
  54.                     {        
  55.                      SCI_Trasmit(Image_data[i][j]);
  56.                     /*
  57.                                if(Image_data[i][j]>THERSHOLD)
  58.                                SCI_Trasmit('1');
  59.                                else
  60.                                SCI_Trasmit('0');
  61.                      */
  62.                      }
  63.           }
  64. }


  65. void main(void)
  66. {        PLL_Init();     
  67.            ECT_Init();
  68.            SCI_Init();
  69.            DDRB=0x00;    //  设置A口数据方向为输入


  70.           EnableInterrupts;


  71.   for( ;  ;  )
  72.   {
  73.              if  (VSYN_C==1)
  74.                Process();   
  75.              for(;;);
  76.             
  77.   }
  78. }
  79. //行中断处理函数 PT0     
  80. #pragma CODE_SEG  NON_BANKED
  81. interrupt  8 void   PT0_Interrupt(void)
  82. {
  83.         //   unsigned char t=0 ;   
  84.             TFLG1_C0F=1;     //清除行中断标志位
  85.              Line++;                        
  86.          //    t=;
  87.                if(Line == hang[m])
  88.              {
  89.                  Image_data[m][0]=PORTB;
  90.                  Image_data[m][1]=PORTB;
  91.                  Image_data[m][2]=PORTB;
  92.                  Image_data[m][3]=PORTB;
  93.                  Image_data[m][4]=PORTB;
  94.                  Image_data[m][5]=PORTB;
  95.                  Image_data[m][6]=PORTB;
  96.                  Image_data[m][7]=PORTB;
  97.                  Image_data[m][8]=PORTB;
  98.                  Image_data[m][9]=PORTB;
  99.                  Image_data[m][10]=PORTB;
  100.                  Image_data[m][11]=PORTB;
  101.                  Image_data[m][12]=PORTB;
  102.                  Image_data[m][13]=PORTB;
  103.                  Image_data[m][14]=PORTB;
  104.                  Image_data[m][15]=PORTB;
  105.                  Image_data[m][16]=PORTB;
  106.                  Image_data[m][17]=PORTB;
  107.                  Image_data[m][18]=PORTB;
  108.                  Image_data[m][19]=PORTB;
  109.                  Image_data[m][20]=PORTB;
  110.                  Image_data[m][21]=PORTB;
  111.                  Image_data[m][22]=PORTB;
  112.                  Image_data[m][23]=PORTB;
  113.                  Image_data[m][24]=PORTB;
  114.                  Image_data[m][25]=PORTB;
  115.                  Image_data[m][26]=PORTB;
  116.                  Image_data[m][27]=PORTB;
  117.                  Image_data[m][28]=PORTB;
  118.                  Image_data[m][29]=PORTB;
  119.                  Image_data[m][30]=PORTB;
  120.                  Image_data[m][31]=PORTB;
  121.                  Image_data[m][32]=PORTB;
  122.                  Image_data[m][33]=PORTB;
  123.                  Image_data[m][34]=PORTB;
  124.                  Image_data[m][35]=PORTB;
  125.                  Image_data[m][36]=PORTB;
  126.                  Image_data[m][37]=PORTB;
  127.                  Image_data[m][38]=PORTB;
  128.                  Image_data[m][39]=PORTB;
  129.                  Image_data[m][40]=PORTB;
  130.                  Image_data[m][41]=PORTB;
  131.                  Image_data[m][42]=PORTB;
  132.                  Image_data[m][43]=PORTB;
  133.                  Image_data[m][44]=PORTB;
  134.                  Image_data[m][45]=PORTB;
  135.                  Image_data[m][46]=PORTB;
  136.                  Image_data[m][47]=PORTB;
  137.                  Image_data[m][48]=PORTB;
  138.                  Image_data[m][49]=PORTB;
  139.                  Image_data[m][50]=PORTB;
  140.                  Image_data[m][51]=PORTB;
  141.                  Image_data[m][52]=PORTB;
  142.                  Image_data[m][53]=PORTB;
  143.                  Image_data[m][54]=PORTB;
  144.                  Image_data[m][55]=PORTB;
  145.                  Image_data[m][56]=PORTB;
  146.                  Image_data[m][57]=PORTB;
  147.                  Image_data[m][58]=PORTB;
  148.                  Image_data[m][59]=PORTB;
  149.                  Image_data[m][60]=PORTB;
  150.                  Image_data[m][61]=PORTB;
  151.                  Image_data[m][62]=PORTB;
  152.                  Image_data[m][63]=PORTB ;
  153.                  Image_data[m][64]=PORTB ;
  154.                  Image_data[m][65]=PORTB;
  155.                  Image_data[m][66]=PORTB;
  156.                  Image_data[m][67]=PORTB;
  157.                  Image_data[m][68]=PORTB;
  158.                  Image_data[m][69]=PORTB ;
  159.                  Image_data[m][70]=PORTB;
  160.                  Image_data[m][71]=PORTB;
  161.                  Image_data[m][72]=PORTB;
  162.                  Image_data[m][73]=PORTB;
  163.                  Image_data[m][74]=PORTB;
  164.                  Image_data[m][75]=PORTB;
  165.                  Image_data[m][76]=PORTB;
  166.                  Image_data[m][77]=PORTB;
  167.                  Image_data[m][78]=PORTB;
  168.                  Image_data[m][79]=PORTB;
  169.                  Image_data[m][80]=PORTB;
  170.                  Image_data[m][81]=PORTB;
  171.                  Image_data[m][82]=PORTB;
  172.                  Image_data[m][83]=PORTB;
  173.                  Image_data[m][84]=PORTB;
  174.                  Image_data[m][85]=PORTB;
  175.                  Image_data[m][86]=PORTB;
  176.                  Image_data[m][87]=PORTB;
  177.                  Image_data[m][88]=PORTB;
  178.                  Image_data[m][89]=PORTB;
  179.                  Image_data[m][90]=PORTB;
  180.                  Image_data[m][91]=PORTB;
  181.                  Image_data[m][92]=PORTB;
  182.                  Image_data[m][93]=PORTB;
  183.                  Image_data[m][94]=PORTB;
  184.                  Image_data[m][95]=PORTB;
  185.                  Image_data[m][96]=PORTB;
  186.                  Image_data[m][97]=PORTB;
  187.                  Image_data[m][98]=PORTB;
  188.                  Image_data[m][99]=PORTB;
  189.                  Image_data[m][100]=PORTB;
  190.                  Image_data[m][101]=PORTB;
  191.                  Image_data[m][102]=PORTB;
  192.                  Image_data[m][103]=PORTB;
  193.                  Image_data[m][104]=PORTB;
  194.                  Image_data[m][105]=PORTB;
  195.                  Image_data[m][106]=PORTB;
  196.                  Image_data[m][107]=PORTB;               
  197.                  m++;
  198.             }                                                      
  199.              if(m==36)
  200.              {               
  201.                   VSYN_C++;
  202.               }
  203. }
  204. //场中断处理函数
  205. #pragma CODE_SEG  NON_BANKED
  206. interrupt 9 void PT1_interrupt(void)
  207. {   
  208.          TFLG1_C1F=1;    //清除场同步中断  
  209.          TFLG1_C0F=1;      //
  210.          TIE=0x01;             //进入一场后开行中断,关闭场中断
  211.          Line=0;                  //初始化采集行的下标
  212.          m=0;                       
  213. }
  214. /*#pragma CODE_SEG  NON_BANKED
  215. interrupt 11 void PT3_interrupt(void)
  216. {   
  217.           unsigned char j;
  218.           for(j=0;j<1000;j++);
  219.            
  220.          
  221. }  */
  222. 这个程序进的了场中断,就是进不去行中断。谁能帮忙看下这个程序,感激不尽啊!![qq]1259273440[/qq]
复制代码


3

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
634
威望
420
贡献
120
兑换币
12
注册时间
2011-8-4
在线时间
47 小时
2#
发表于 2012-4-4 12:26:20 | 只看该作者
试试看在行中断硬件上加个103电容
回复

使用道具 举报

13

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1541
威望
918
贡献
377
兑换币
115
注册时间
2011-8-23
在线时间
123 小时
3#
发表于 2012-4-6 10:14:33 | 只看该作者
为什么?
回复

使用道具 举报

10

主题

62

帖子

0

精华

高级会员

Rank: 4

积分
838
威望
349
贡献
437
兑换币
4
注册时间
2012-3-2
在线时间
26 小时
毕业学校
桂林电子科技大学
4#
发表于 2012-4-6 10:30:27 | 只看该作者
那就单独试看这两个中断可不可以用啊
回复

使用道具 举报

9

主题

44

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3094
QQ
威望
873
贡献
1877
兑换币
184
注册时间
2011-10-16
在线时间
172 小时
5#
 楼主| 发表于 2012-4-6 21:54:44 | 只看该作者
现在找出问题来了  原来是我的行中断引脚坏了。
回复

使用道具 举报

5

主题

75

帖子

0

精华

高级会员

Rank: 4

积分
943
QQ
威望
528
贡献
215
兑换币
61
注册时间
2012-2-26
在线时间
100 小时
6#
发表于 2012-5-17 23:12:33 | 只看该作者
file:///C:/Users/DELL/AppData/Roaming/Tencent/Users/271116945/QQ/WinTemp/RichOle/L9N%7B(KSCH$WSEV9CM%7DMZ5A4.jpg请问在执行场中断后,不是已经使TIE=0x01,场中断已经关闭,行中断开了,为什么程序进不了上面的行中断,谢谢
回复

使用道具 举报

4

主题

487

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2981

活跃会员奖章优秀会员奖章

QQ
威望
2216
贡献
489
兑换币
53
注册时间
2010-11-10
在线时间
138 小时
7#
发表于 2012-5-18 18:08:45 | 只看该作者
突然间 感觉大家的采集程序基本一致啊
回复

使用道具 举报

4

主题

118

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1231
QQ
威望
716
贡献
293
兑换币
0
注册时间
2011-9-27
在线时间
112 小时
8#
发表于 2012-7-5 10:29:59 | 只看该作者
楼上说的对啊,现在都是程序一大抄、、、
回复

使用道具 举报

7

主题

40

帖子

0

精华

高级会员

Rank: 4

积分
578
威望
321
贡献
145
兑换币
35
注册时间
2012-9-12
在线时间
56 小时
9#
发表于 2012-11-28 09:12:54 | 只看该作者
采集的行数为什么比采集到的矩阵像素点的行数小,什么是采集的矩阵像素点,什么是采集的行数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-29 11:24 , Processed in 0.069861 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表