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

📄 main.c

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 C
字号:
//-----------------------------------------------------------------
//  名称: 用带SPI接口的MCP23S17扩展16位通用IO端口
//-----------------------------------------------------------------
//  说明: 本程序将MCP23S17的GPIOA的8位及GPIOB的低6位设为输出端口,
//        将GPIOB的高2位设为输出端口,演示了条形LED在按键控制的下
//        的滚动效果.
//
//-----------------------------------------------------------------
#define INT8U   unsigned char
#define INT16U  unsigned int
#define _XTAL_FREQ 1000000UL
#include <pic.h> 
//MCP23S17器件及寄存器地址定义(ICON.BANK默认为0)
#define  MCP_ADDR  0x40   //MCP23S17地址(地址格式:0 1 0 0 A2 A1 A0 R/W)
#define  IODIRA    0x00   //设置GPIOA方向
#define  IODIRB    0x01   //设置GPIOB方向
#define  GPIOA     0x12   //获取或设置GPIOA的值
#define  GPIOB     0x13   //获取或设置GPIOB的值
#define  OLATA     0x14   //设置OLATA的值
#define  OLATB     0x15   //设置OLATB的值
#define  INTCONA   0x0A   //GPIOA端口中断控制
#define  INTCONB   0x0B   //GPIOB端口中断控制
#define  GPPUB     0x0D   //GPIOB内部100K电阻上拉
#define  IOCON     0x08   //IO控制寄存器
//SPI使能与禁用
#define SPI_EN() RC6 = 0
#define SPI_DI() RC6 = 1
//当前演示操作序号(0,1)
volatile INT8U Demo_OP_No = 0;
//-----------------------------------------------------------------
// SPI主机初始化
//-----------------------------------------------------------------
void SPI_MasterInit()
{


}

//-----------------------------------------------------------------
// SPI数据传输
//-----------------------------------------------------------------
INT8U SPI_Transmit(INT8U dat)
{
    //启动数据传输,然后等待传输结束,最后返回SSPBUF(读值时可用)


}

//-----------------------------------------------------------------
// 向MCP23S17写入器件地址,寄存器地址,命令/数据共三个字节
//-----------------------------------------------------------------
void Write_MCP23S17(INT8U Device_addr,INT8U Reg_addr, INT8U CD)
{


}

//-----------------------------------------------------------------
// 根据器件地址,寄存器地址,从MCP23S17读字节
//-----------------------------------------------------------------
void Read_MCP23S17(INT8U Device_addr,INT8U Reg_addr, INT8U *Dat)
{

   
}

//-----------------------------------------------------------------
// 初始化MCP23S17
//-----------------------------------------------------------------
void Initialise_MCP23S17()
{
    //设置I/O方向(1为输入,0为输出),其中GPIOB高2位按键输入,其他全部设为输出


}

//-----------------------------------------------------------------
// 检测处理
//-----------------------------------------------------------------
void Key_Handle()
{
    INT8U Key_Port_Status;    
    //从MCP23S17的GPIOB端口读取按键值


    //根据按键改变当前演示操作序号Demo_OP_No
    //如果未按键则保持原演示序号



}

//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{
    INT8U i; INT16U Pattern;    
    SPI_MasterInit();                //SPI主机初始化
    Initialise_MCP23S17();           //MCP23S17初始化
    while (1)
    {  
   
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -