⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 510test.txt

📁 此程序可以驱动所有基于iic的器件
💻 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 + -