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

📄 testboard1.lst

📁 PIC MCU开发用的一个小工具,用于对某些外设芯片子程序的调试,有2个按键2x20的字符LCD,3个I/O,1个UART,非常好用,包含SCHPCB 以及初始化C代码.
💻 LST
📖 第 1 页 / 共 3 页
字号:
     1:         #include <pic.h>

     2:         #include <pic16630.h>

     3: 

     4: /**************端口定义**************

     5: ************************************/

     6:         #define port0           RA0             //用户IO端口0

     7:         #define SCB                     RA1             //用户IO端口1

     8:         #define SCB_T           TRISA1  

     9:         #define port2           RA2             //用户IO端口2

    10:         #define port3           RA3             //用户输入端口

    11:         #define incsel          RA4             //按键DEC

    12:         #define decent          RA5             //按键INC

    13:         #define dis_clk         RC0             //显示数据输出时钟

    14:         #define dis_data        RC1             //显示数据输出端口

    15:         #define dis_rs          RC2             //显示命令/数据选择

    16:         #define dis_en          RC3             //显示使能控制

    17:         #define txd                     RC4             //URAT发送端

    18:         #define rxd                     RC5             //URAT接收端

    19:         #define buzz            RC5             //蜂鸣器

    20: 

    21: /********特殊寄存器初始化参数********

    22: ************************************/

    23:         #define TRISA_CODE              0X3e

    24: /*      TRISA

    25:                 5       4       3       2       1       0

    26:                 I       I       I       I       i       O

    27:                 |       |       |       |       |       |->用户端口0

    28:                 |       |       |       |       |----->用户端口1

    29:                 |       |       |       |--------->用户端口2

    30:                 |       |       |------------->用户输入端口2

    31:                 |       |----------------->按键输入1

    32:                 |--------------------->按键输入2

    33: */

    34:         #define IOCA_CODE               0X00

    35:         #define TRISC_CODE              0X00

    36: /*      TRISC

    37:                 5       4       3       2       1       0

    38:                 O       O       0       0       0       0

    39:                 |       |       |       |       |       |->显示时钟输出

    40:                 |       |       |       |       |----->显示数据输出

    41:                 |       |       |       |--------->命令/数字选择

    42:                 |       |       |------------->LCD EN使能

    43:                 |       |----------------->TXD

    44:                 |--------------------->BUZZ(RXD)

    45: */

    46:         #define WPUA_CODE               0X33    //A口弱上拉

    47:         #define ANSEL_CODE              0X00    //A/D模拟/数字端口选择

    48: /*      ANSEL

    49:                 7       6       5       4       3       2       1       0

    50:                 |       |       |       |       |       |       |       |->RA0

    51:                 |       |       |       |       |       |       |----->RA1

    52:                 |       |       |       |       |       |--------->RA2

    53:                 |       |       |       |       |------------->RA4

    54:                 |       |       |       |----------------->RC0

    55:                 |       |       |--------------------->RC1

    56:                 |       |------------------------->RC2

    57:                 |----------------------------->RC3

    58: */

    59:         #define OPTION_CODE             0X47

    60: /*      OPTION

    61:                 7       6       5       4       3       2       1       0

    62:                 |       |       |       |       |       |       |       |->\

    63:                 |       |       |       |       |       |       |------->T0前分频选择

    64:                 |       |       |       |       |       |--------->/

    65:                 |       |       |       |       |------------->预分频使用选择(为0时T0使用)

    66:                 |       |       |       |----------------->T0记数边沿选择(0为上边沿触发)

    67:                 |       |       |--------------------->T0计数来源选择(为1RA2输入)

    68:                 |       |------------------------->INT中断边沿选择(0为下降沿触发)

    69:                 |----------------------------->A口弱上拉控制(为0打开)

    70: */

    71:         #define PIE1_CODE               0x00

    72: /*      PIE1

    73:                 7       6       5       4       3       2       1       0

    74:                 |       |       |       |       |       |       |       |->TMR1IE定时器1中断控制

    75:                 |       |       |       |       |       |       |----->

    76:                 |       |       |       |       |       |--------->

    77:                 |       |       |       |       |------------->CMIE比较器中断控制

    78:                 |       |       |       |----------------->

    79:                 |       |       |--------------------->

    80:                 |       |------------------------->ADIE模数变换中断控制

    81:                 |----------------------------->EEIE内部EEROM中断控制

    82: */

    83:         #define ADCON1_CODE             0x00

    84: //AD变换工作时钟选择,选择标准以转换时间>1.6uS为准,基准时钟是主振荡频率

    85:         #define VRCON_CODE              0x00

    86: //比较器控制

    87:         #define PORTA_CODE              0X00            

    88:         #define PORTC_CODE              0X00

    89:         #define INTCON_CODE             0X40

    90: /*      INTCON

    91:                 7       6       5       4       3       2       1       0

    92:                 |       |       |       |       |       |       |       |->A口中断标志

    93:                 |       |       |       |       |       |       |----->INT中断标志

    94:                 |       |       |       |       |       |--------->T0中断标志

    95:                 |       |       |       |       |------------->A口变化中断允许

    96:                 |       |       |       |----------------->INT中断允许

    97:                 |       |       |--------------------->T0中断允许

    98:                 |       |------------------------->外部中断总控制

    99:                 |----------------------------->中断总控制

   100: */

   101:         #define T1CON_CODE              0X00

   102: /*      T1CON

   103: 7       6       5       4       3       2       1       0

   104: |       |       |       |       |       |       |       |->

   105: |       |       |       |       |       |       |----->T1外部计数门控位(0开计数,1外部控制为0时计数)

   106: |       |       |       |       |       |--------->\

   107: |       |       |       |       |--------------->前分频选择

   108: |       |       |       |----------------->LP外部时钟选择(1使能外部时钟)

   109: |       |       |--------------------->外部时钟同步选择(0同步输入)

   110: |       |------------------------->时钟来源选择(0为内部时钟,1为RA5输入)

   111: |----------------------------->计数控制位(1开始计数)

   112: */

   113:         #define ADCON0_CODE             0x00

   114: /*      ADCON0

   115: 7       6       5       4       3       2       1       0

   116: |       |       |       |       |       |       |       |->数据格式选择(为0数据靠高端)

   117: |       |       |       |       |       |       |----->基准电压选择(为1由RA1提供)

   118: |       |       |       |       |       |--------->

   119: |       |       |       |       |------------->\

   120: |       |       |       |------------------->通道选择

   121: |       |       |--------------------->/

   122: |       |------------------------->AD变换启动位(为1启动,硬件清零)

   123: |----------------------------->AD模块电源控制(为1开启)

   124: */

   125:         #define CMCON_CODE              0X07

   126: //关闭比较器功能

   127: 

   128: /***************常数定义*************

   129: ************************************/

   130:         const unsigned char welcome_words[]="PICMCU software test";

   131:         const unsigned char type_words[]="     Ver 1.0  051210";

   132: 

   133: /***************变量定义*************

   134: ************************************/

   135:         static volatile unsigned char discpsw0; //碟机状态

   136:         static volatile unsigned char discpsw1;

   137:         static volatile unsigned char discpsw2;

   138:         static volatile unsigned char discpsw3;

   139:         static volatile unsigned char discpsw4;

   140:         static volatile unsigned char discpsw5;

   141:         static volatile unsigned char discpsw6;

   142:         static volatile unsigned char discpsw7;

   143:         static volatile unsigned char softpsw;

   144: /*      softpsw

   145: 7       6       5       4       3       2       1       0

   146: |       |       |       |       |       |       |       |->数据读取标志(为1正在读取)

   147: |       |       |       |       |       |       |----->数据准备好标志(为1准备好)

   148: |       |       |       |       |       |--------->显示标志

   149: |       |       |       |       |------------->

   150: |       |       |       |----------------->

   151: |       |       |--------------------->

   152: |       |------------------------->

   153: |----------------------------->

   154: */

   155:         static volatile unsigned char nowdisc;

   156:         static volatile unsigned char nowtrackH;

   157:         static volatile unsigned char nowtrackL;

   158:         static volatile unsigned char nowminH;

   159:         static volatile unsigned char nowminL;

   160:         static volatile unsigned char nowsecH;

   161:         static volatile unsigned char nowsecL;

   162:         static volatile unsigned char playpsw;

   163: /*      playpsw

   164: 7       6       5       4       3       2       1       0

   165: |       |       |       |       |       |       |       |->为1扫描播放

   166: |       |       |       |       |       |       |----->

   167: |       |       |       |       |       |--------->

   168: |       |       |       |       |------------->

   169: |       |       |       |----------------->

   170: |       |       |--------------------->

   171: |       |------------------------\

   172: |----------------------------->00无重复,01重复单曲,10重复所有

   173: */      

   174:         static volatile unsigned char playpar[]=" D-    T-  :";

   175:         static volatile unsigned char playstate[]="  ALP Changer";

   176: 

   177: /******************************************

   178: 特殊寄存器设置函数;sfr_setup

   179:   作用:初始化内部特殊寄存器;

   180:   入口:无;

   181:   出口:无;

   182: *******************************************/

   183:         void sfr_setup(void)

   184:         {

   185: //BANK1

   186:         TRISA=TRISA_CODE;

   187:         TRISC=TRISC_CODE;

   188:         OPTION=OPTION_CODE;

   189:         PIE1=PIE1_CODE;

   190:         ANSEL=ANSEL_CODE;

   191:         ADCON1=ADCON1_CODE;

   192:         IOCA=IOCA_CODE;

   193:         WPUA=WPUA_CODE;

   194: //BANK0

   195:         PORTA=PORTA_CODE;               

   196:         PORTC=PORTC_CODE;

   197:         INTCON=INTCON_CODE;

   198:         T1CON=T1CON_CODE;

   199:         ADCON0=ADCON0_CODE;

   200:         CMCON=CMCON_CODE;

   201:         }

   202: /*********************************************************************************

   203: 

   204:                                                                 双机通讯管理

   205: 

   206: *********************************************************************************/

   207: /************************************************************

   208: 延时函数d7uS()

   209:   作用:延时7uS

   210: ************************************************************/

   211:         void d7uS(void)

   212:         {

   213:          asm("nop");

   214:          asm("nop");

   215:         }

   216: /************************************************************

   217: 延时函数d17uS()

   218:   作用:延时17uS

   219: ************************************************************/

   220:         void d17uS(void)

   221:         {

   222:          unsigned char cnt;

   223:          for(cnt=3;cnt>0;cnt--);

   224:          asm("nop");asm("nop");

   225:         }

   226: /************************************************************

   227: 延时函数d100uS()

   228:   作用:延时100uS

   229: ************************************************************/

   230:         void d100uS(void)

   231:         {

   232:          unsigned char cnt;

   233:          for(cnt=23;cnt>0;cnt--)

   234:                 {asm("nop");}

⌨️ 快捷键说明

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