中级会员
- 积分
- 489
- 威望
- 361
- 贡献
- 20
- 兑换币
- 0
- 注册时间
- 2009-11-16
- 在线时间
- 54 小时
|
1贡献
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include <MC9S12XS128.h>
#define uint unsigned int
#define hang 20 // 采集的行数
#define line 50 //每行采集的点数
uchar hang_flag ; //每行采集的标志
uchar table[hang][line]; //采集的数组
uchar hang_shu; //采集的行数
#define hang_interrupt TIE_C0I=1;
#define dishang_interrupt TIE_C0I=0;
uchar row1=0; // 数组的行数
void IO_init( void )
{
DDRA=0X00; //PA口为图像数据输入口
PUCR_PUPAE=1; //使能上拉电阻
}
void catch_init(void)
{
TSCR1_TEN=0; //使能主定时器
PERT=0XFF;
DDRT=0X00;
TIOS_IOS0=0; //timer0,timer 1工作在输入捕捉方式下
TIOS_IOS1=0;
TCTL4=0X09; //设置timer0 为上升沿触发,timer1为下降沿触发
TIE_C0I=1; //使能timer0 中断
TIE_C1I=1; //使能timer1 中断
TSCR1_TEN=1; //使能主定时器
}
void delay(uint z) //延时函数 1ms
{
uint x,y;
for(y=z;y>0;y--)
for(x=2250;x>0;x--);
}
void pll_init( void ) //锁相环初始化 总线时钟32M
{
CLKSEL_PLLSEL=0; //时钟选择
PLLCTL_PLLON=1; //使能锁相环控制器
SYNR=3; //时钟合成
REFDV=1; //时钟分配
_asm(nop);
_asm(nop);
while(!(CRGFLG_LOCK==1));
CLKSEL_PLLSEL=1; //锁定时钟
}
void sci_init(void)
{
SCI0CR2=0X2C; //使能SCI 串口通信
SCI0BDH=0X00; // 波特率设置总线时钟32M 下波特率9600
SCI0BDL=0XD0;
}
//放送初始化Send///
void uart(uchar ch )
{
while(!(SCI0SR1&0Xc0));//必须是c0如果是80可能会出现乱码
SCI0DRL=ch; //放送内容
}
uint i,j;
void main(void)
{
EnableInterrupts;
IO_init();
catch_init();
pll_init();
sci_init();
DDRB=0XFF;
for(i=0;i< hang ;i++)
{
for(j=0;j<line;j++)
{
uart(table[i][j]); //串口发送
delay(11);
}
}
for(;;)
{
}
}
#pragma CODE_SEG NON_BANKED
void interrupt 8 hang_( void )
{
uchar i,j;
TFLG1_C0F=1;//清除行中断标志
hang_flag ++;
if(hang_flag==20)
{
dishang_interrupt
hang_flag=0;
}
for(j=0;j<20;j++)
{
row1++;
for(i=0;i<50;i++)
{
table[row1][i]=PORTA;
}
}
}
#pragma CODE_SEG NON_BANKED
void interrupt 9 line_(void )
{
TFLG1_C1F=1;//清除场中断标志
hang_interrupt //使能行中断
row1=0;
hang_flag=0;
}
我采集20行,每行50点, |
|