?? example_c.c
字號:
#include "f2407_c.h"
#define pwm_half_per 20000
void Start_SPWM(void);
void sci_init(void);
volatile int j=1,k=1,Lowbyte,Highbyte,numble=0,temp;
void main(void)
{
asm (" setc INTM");
asm (" setc SXM");
*SCSR1 = 0x0065;
*SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
*WDCR = 0x00E8;
WSGR = 0x0000;
*MCRA = 0x0C03;
*MCRB = 0xFE00;
*MCRC = 0x0000;
*GPTCONA = 0x0000;
*T1CNT = 0x0000;
*T1PR = pwm_half_per;
//*DBTCONA = 0x05E8;
*ACTRA = 0x0600;
*COMCONA = 0x8200;
*T1CON = 0x0840;
*IFR = 0xFFFF;
*IMR = 0x0003;
*EVAIFRA = 0xFFFF;
*EVAIFRB = 0xFFFF;
*EVAIFRC = 0xFFFF;
*EVAIMRA = 0x0200;
*EVAIMRB = 0x0000;
*EVAIMRC = 0x0000;
*EVBIFRA = 0xFFFF;
*EVBIFRB = 0xFFFF;
*EVBIFRC = 0xFFFF;
*EVBIMRA = 0x0000;
*EVBIMRB = 0x0000;
*EVBIMRC = 0x0000;
sci_init();
Start_SPWM();
*T1CON = 0x0840;
asm( " CLRC INTM ");
while(1);
}
interrupt void t1ufint(void)
{
*EVAIFRA = *EVAIFRA & 0x0200;
*SCICTL2=(*SCICTL2|0x2); /*可以不這樣設置,最好用空閑線模式*/
*CMPR3=numble;
asm(" clrc INTM ");
}
interrupt void sciint(void)
{
if(j==1)
{
Lowbyte=*SCIRXBUF;
j=0;
k=0;
}
if(k==1)
{
temp= *SCIRXBUF;
temp=(temp<<8);
Highbyte=temp;
numble=Lowbyte+Highbyte;
j=1;
k=0;
*SCICTL2=(*SCICTL2&0xFD); /*可以不這樣設置,最好用空閑線模式*/
}
k++;
asm(" clrc INTM ");
}
void Start_SPWM(void)
{
*CMPR3 = 0x0000;
*T1CNT = 0x0000;
*T1CON = *T1CON | 0x0040;
}
void sci_init(void)
{
(*SCICCR) =0x000F;
(*SCIHBAUD)=0x0000;
(*SCILBAUD)=0x0009;
(*SCICTL1)=0x0001;
(*SCICTL2)=0x0002;
(*SCICTL1)=0x0021;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -