📄 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 + -