?? 510test.txt
字號:
#include "register.h"
int led_data=0;
void LED_ACT()
{
int j=16,l=0,k=0,i;
*PFDATDIR=*PFDATDIR&0xFF8F;//UPDDATE置0
while(j--)
{
k=led_data&0x8000;
k=k>>11;//IOPF4
k=k&0x0010;
l=*PFDATDIR&0xFFEF;
*PFDATDIR=l|k;//IOPF4
led_data=led_data<<1;//上述為數據輸入
*PFDATDIR=*PFDATDIR&0XFFDF; //CLK置0 IOPF5
for(i=8;i>0;i--){}//延時150ns以上
*PFDATDIR=*PFDATDIR|0x2020;//CLK置1
for(i=8;i>0;i--){}//延時150ns以上
}
*PFDATDIR=*PFDATDIR|0x4040;//UPDDATE置1 iopf6
for(i=8;i>0;i--){}//延時150ns以上
*PFDATDIR=*PFDATDIR&0xFF8F;//UPDDATE置0
}
void initial()
{
asm(" setc INTM");
asm(" setc SXM"); // 符號位擴展有效
asm(" clrc OVM"); // 累加器中結果正常溢出
asm(" clrc CNF"); // B0被配置為數據存儲空間
//*SCSR2=*SCSR2|0X0020;
//*WDCR=0x2F; // 使能看門狗 E8?
*WDCR=0xE8; // 軟件禁止看門狗
*SCSR1=0x83FF; // CLKIN=15M,CLKOUT=4*CLKIN=30M
*IMR=0x00; // 禁止所有中斷
*IFR=0xFF; // 清除全部中斷標志,"寫1清0"
*MCRA=0X0083;//scitx scirx pwm2
*MCRB=0xFE00;//iopd0
*MCRC=0x0180;//cap4 cap5
*PADATDIR=0xFD03;
*PBDATDIR=0xFF00;
*PCDATDIR=0x2FD0;//IOPC7 IOPC6 IOPC4輸入
*PDDATDIR=0xFF00;
*PEDATDIR=0xFF00;//IOPE7 cap4引腳
*PFDATDIR=0xF50A;//IOPF1:DETECT 輸入 IOPF2:8255CS 低電平 IOPF3 PreOrDelay
*T2CNT=0X0000; // T2計數器清0
*T2CON=0X1704; // T2為連續增計數模式,128分頻,且選用內部時鐘源
*T2PER=11000; // 設置T2的周期寄存器,0.0352秒周期
*T4CNT=0X0000; // T3計數器清0
*T4CON=0X1004; // T3為連續增計數模式,1分頻,且選用內部時鐘源
*T4PER=10000;
*T3CNT=0X0000; // T3計數器清0
*T3CON=0X1004; // T3為連續增計數模式,1分頻,且選用內部時鐘源
*T3PER=65535;
*T1CNT=0X0000; // T1計數器清0
*T1CON=0X1704; // T1為連續增計數模式,128分頻,且選用內部時鐘源
*T1PER=0xBEBC; // 設置T1的周期寄存器,1/1280 秒 0.78125ms
*ACTRA=*ACTRA|0X0008;
*ACTRA=*ACTRA&0X0008;
*CMPR1=0X5F5E;// T1PER/2
*COMCONA=0XA600;
*EVAIFRB=0XFFFF; // 清除EVB中斷標志,寫"1"清0
*EVBIFRA=0XFFFF; // 清除EVB中斷標志,寫"1"清0
*EVBIFRB=0XFFFF; // 清除EVB中斷標志,寫"1"清0
*EVBIFRC=0XFFFF; // 清除EVB中斷標志,寫"1"清0
*EVAIMRB=0x0001;//開TIMER2周期中斷
*EVBIMRA=0x0400;//開TIMER3周期中斷
*EVBIMRB=0X0000; // 暫不允許TIMER4周期中斷
*EVBIMRC=0X0000; // 暫不允許CAPTURE4中斷
*ADCTRL1=0X2F88; // 使能校準
*ADCTRL2=0X4000; //校準一次
*ADCTRL1=0X6FE0; // 采樣時間窗口預定標位ACQ PS3-ACQ PS0為9,輸入阻抗3K
// 轉換時間預定標位CPS為0,AD為啟動停止模式,排
// 序器為級連工作方式,且禁止特殊的兩種工作模式
*ADCTRL2=0X0000; //用EVB的一個事件信號觸發AD轉換,
// 且用中斷模式1
*ADCTRL2=*ADCTRL2|0x4242;
*MAXCONV=0X50; // 6通道
*CHSELSEQ1=0XFFFF;
*CHSELSEQ2=0XFFFF;
*CHSELSEQ3=0X4000;
*CHSELSEQ4=0XFF44;
*ADCTRL1=0X2FC0;
//*GPTCONB=0X6400; // 使能T4周期中斷標志觸發AD轉換0x0100;FF7F;
//*GPTCONB=0XF000; //無事件啟動AD
*CAPCONB=0X2250; // 設置捕獲單元4為檢測上升沿,且選擇TIMER3為時鐘,
// 捕獲單元6為檢測上升沿,且選擇TIMER4為時鐘
*SCICCR=0x7; //1個停止位,不使能奇偶校驗,空閑線多處理
//器模式,8位字符
*SCICTL1=0x13; //使能接收和發送,SLEEP=0 禁止休眠
//方式 , 禁止接收錯誤中斷,TXWAKE=0 即沒
//有選定的發送特征
*SCICTL2=0x00; //禁止接收和發送中斷
*SCIHBAUD=0x01;//*SCIHBAUD=0x00;
*SCILBAUD=0x03; //*SCILBAUD=0xC2; //波特率=19200B/S//*SCIHBAUD=0x1;
*SCICTL1=0x33; //使SCI脫離復位狀態
*SCIPRI=0x54; //SCI中斷(接收和發送中斷)為高 先級中斷,0x60為低
asm(" clrc INTM");
}
main()
{
initial();
while(1)
{
led_data=0x55CC;
LED_ACT();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -