?? sci.h
字號:
#include "stdlib.h"
#define bi_preset re_flag|=0x01
#define bi_preclr re_flag&=~0x01
#define bi_datset re_flag|=0x02
#define bi_datclr re_flag&=~0x02
#define bi_codset re_flag|=0x04
#define bi_codclr re_flag&=~0x04
#define bi_cheset re_flag|=0x08
#define bi_checlr re_flag&=~0x08
#define bi_endset re_flag|=0x10
#define bi_endclr re_flag&=~0x10
#define ref_hpre 0x01
#define ref_npre 0x00
#define ref_hdat 0x03
#define ref_ndat 0x00
#define ref_hcod 0x07
#define ref_ncod 0x00
#define ref_hche 0x0f
#define ref_nche 0x00
#define ref_hend 0x1f
#define ref_nend 0x00
#define ref_chan 0x55
#define ref_ncha 0x00
#define changed 0x55
#define nchange 0xaa
/*****通訊協議定義*****/
#define op_initsys 0x80
#define op_setall 0x81
#define op_setfile 0x82
#define op_poweron 0x83
#define op_poweroff 0x84
#define op_tranmod 0x85
#define op_missmod 0x86
#define op_capfile 0x87
#define op_delfile 0x88
#define op_delallf 0x89
#define op_trafile 0x8a
#define op_traallf 0x8b
#define op_transys 0x8c
#define op_havrece 0x8d
#define op_havsent 0x8e
#define op_filfull 0x8f
#define op_filenum 0x90
#define op_currentdisp 0x91
#define op_offtimedisp 0x92
#define op_retransys 0x93
#define op_savestate 0x94
#define op_start 0x95
#define op_stop 0x96
#define op_busy 0x97
#define op_nbusy 0x98
#define op_ndata 0x99
#define op_reset 0x9a
#define op_capmode 0x9b
#define op_shoot 0x9c
#define op_hold 0x9d
#define op_sysstate 0x9e
#define op_empty 0x00
#define op_full 0x55
#define op_capset 0xa0
#define op_capinterupt 0xa1
#define op_capstart 0xa2
#define op_curcap 0xa3
#define op_capprechar 0xaa //cap->os
#define op_osprechar 0xbb //os->cap
#define op_endchar 0xff
char buf[60];
char re_flag;
static uchar re_num,recdata[16],re_change;
extern int UsbOrSci;
void inttostring(long num)
{
int i;
i=ltoa(num,buf);
buf[i]='\0';
}
/*串行端口初始化*/
void inline initialsci()
{
*SCICCR=0X07; /*一個停止位,不使能奇偶校驗,空閑線模式,8位數據*/
/* *SCICTL1=0X11; /*使能接受中斷,sleep=0,禁止接受錯誤中斷,不使用sci喚醒*/
/* *SCICTL2=0X02; /*使能接收中斷*/
*SCICTL1=0X13;/*使能接收發送,sleep=0,禁止休眠,禁止接收錯誤中斷,*/
/*txwake=0;沒有選定發送特征*/
*SCICTL2=0X02;/*使能接收發送中斷*/
*SCIHBAUD=0X00; /* 40Mclk 0x0081 for 38400bits 0x0103 for 19200 0x208 for 9600*/
*SCILBAUD=0x81;/*0x103 for 20Mclk,0X81 for 10Mclk;/*clkout=10M,波特率位9600*/
*MCRA=*MCRA|0X03;/*SCI管腳基本功能*/
*PADATDIR=*PADATDIR|0X0100;
*SCICTL1=0X33;/*重新使能sci*/
*SCIPRI=0X60;/*sci中斷為低優先級*/
}
void scisend(char data)
{
uchar ready;
*SCITXBUF=data;
wait:
ready=*SCICTL2&0X80;
if(ready!=0x80)
goto wait;
}
void sendstring(const char *string)
{
for(;(*string)!='\0';string++)
scisend(*string);
}
void sendchars(char *string)
{
for(;(*string)!='\0';string++)
scisend(*string);
}
void send0d0a()
{
scisend(0x0d);
scisend(0x0a);
}
void senddis(const char *string,char *chars,long k)
{
sendstring(string);
inttostring(k);
sendchars(chars);
send0d0a();
}
void senddata(char *chars,long k)
{
inttostring(k);
sendchars(chars);
send0d0a();
}
void SciDispose(int re_temp)
{
char i;
if(re_flag==ref_npre)
goto receive_pre;
if(re_flag==ref_hpre)
goto receive_data;
if(re_flag==ref_hdat)
goto receive_code;
if(re_flag==ref_hcod)
goto receive_end;
else
goto receive_error;
receive_pre:
if(re_temp!=op_capprechar)
goto receive_error;
if(re_num<0x02)
{
re_num++;
}
else
{
bi_preset;
re_num=0;
}
goto receive_over;
receive_data:
if(re_num<9)
{
recdata[re_num]=re_temp;
re_num++;
}
else
{
recdata[re_num]=re_temp;
bi_datset;
re_num=0;
}
goto receive_over;
receive_code:
recdata[10]=re_temp;
bi_codset;
goto receive_over;
receive_end:
if(re_temp==op_endchar)
bi_endset;
receiveend:
UsbOrSci=0;
re_change=ref_chan;
receive_error:
re_num=0;
re_flag=0;
receive_over:
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -