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

📄 systemini.lst

📁 这个是汽车制动台控制程序的C语言版本. 用于实际产品中.单片机用的是PIC16F877A.
💻 LST
字号:
     1: #include <pic.h>        // 包含头文件

     2: #include "total.h"

     3: 

     4: /*********************************************************************************

     5: * 最后修改日期:         05-4-29

     6: * 修改原因:             添加注释

     7: * 修改人:               饶阳胜

     8: /********************************************************************************* 

     9: * File:         SystemIni.c

    10: * 功能:                 系统的初始化设置

    11: * 设计者:       饶阳胜

    12: * 日期:                 05-2-27

    13: * 入口参数:     无

    14: * 出口参数:     无

    15: * 说明:                 每个项目均应包含此文件,依具体芯片的不同而做更改

    16: * 芯片:                 PIC16c774

    17: *********************************************************************************/

    18: void System_Init(void)

    19: {       

    20:         PORTA = 0x0;                    //端口设置

    21:         PORTB = 0x0;

    22:         PORTC = 0x0;

    23:         PORTD = 0x0;

    24:         PORTE = 0x0;

    25:         TRISA = 0x23;

    26:         TRISB = 0xFF;

    27:         TRISC = 0xFF;

    28:         TRISD = 0x0;

    29:         TRISE = 0x1;

    30: 

    31:         ENABLE_273 = TRUE;              //选通外部输出273

    32:         

    33:         //配置WDT

    34:         OPTION = 0x8F;

    35: 

    36:         //为AD转换配置参数

    37:         ADCON1 = 0x8d;                  //RA0、RA1、RA3为模拟通道,转换后的数据右对齐

    38: 

    39:         //为串口通信进行配置

    40:         SPBRG = 0x47;                   //波特率设置参数,波特率为9600

    41:         TXSTA = 0x24;                   //使能发送,异步模式,高速

    42:         RCSTA = 0x90;                   //使能接收

    43:         

    44:         //为I2C通信进行配置

    45:         SSPCON = 0x28;                  //主控器方式。允许串行端口(IIC)工作

    46:         SSPADD = 0x1B;                  //为I2C配置时钟

    47:         STAT_CKE = 0;                   //输入电平服从I2C规范

    48:         STAT_SMP = 1;                   //采用100K速率

    49:         

    50:         //为中断做相关设置

    51:         RCIF = 0;                               //清接收中断标志

    52:         ei();                                   //开总中断

    53:         PEIE = 1;                               //开第1外设中断

    54:         RCIE = 1;                               //开接收中断

    55: 

    56:         display_weigh = 0;              //正常显示态

    57:         weigh_side = 0;                 //

    58: }

    59: 

    60: /*******************************************************************************************

    61: * 函数名称: void InitTmr1(void)

    62: * 功能: 初始化TMR1

    63: * 入口参数: 无

    64: * 出口参数: 无

    65: * 全局变量:

    66: * 调用模块: 

    67: * 设计者: 饶阳胜

    68: * 日期: 05/3/4

    69: * 说明: 定时时间: 0.05秒

    70: *******************************************************************************************/

    71: void Init_Tmr1(void){

    72:         T1CON = 0x20;                   //分频比1:4

    73:         TMR1H = 0x78;                   //设定值定入TMR1

    74:         TMR1L = 0xff;

    75:         TMR1IF = 0;                             //清除TMR1溢出中断标志

    76:         TMR1ON = 1;                             //打开TMR1

    77: }

    78: 

    79: /******************************************************************************************

    80: * 函数名称:     unsigned short Hex_Bcd(unsigned short i)

    81: * 功能:         将16进制数转换成BCD码

    82: * 入口参数:     i

    83: * 出口参数: 

    84: * 全局变量:  无

    85: * 调用模块:  无

    86: * 设计者:       饶阳胜

    87: * 日期:                 05-4-4

    88: ******************************************************************************************/

    89: unsigned short Hex_Bcd(unsigned short i)

    90: {

    91:         return ( i / 1000 << 12 | (i % 1000) / 100 << 8 | (i % 100) / 10 << 4 | i % 10);

    92: }

    93: 

    94: /******************************************************************************************

    95: * 函数名称:     unsigned short Bcd_Hex(unsigned short i)

    96: * 功能:         将BCD码转换成16进制数

    97: * 入口参数:     i

    98: * 出口参数: 

    99: * 全局变量:  无

   100: * 调用模块:  无

   101: * 设计者:       饶阳胜

   102: * 日期:                 05-4-4

   103: ******************************************************************************************/

   104: unsigned short Bcd_Hex(unsigned short i)

   105: {

   106:         return (i >> 12 & 0xf) * 1000 + (i >> 8 & 0xf) * 100 + (i >> 4 & 0xf) * 10 + (i & 0xf);

   107: }

   108: 

   109: /***************************************************************************************************

   110: * 函数名称:     void Delay(unsigned short i,unsigned short j)

   111: * 功能:                 实现不同时段的延时

   112: * 入口参数:     i,j             延时参数,值越大,时间越长

   113: * 出口参数:     无

   114: * 调用模块:     无

   115: * 全局变量:     无

   116: * 设计者:       饶阳胜

   117: * 日期:         05-4-2

   118: ***************************************************************************************************/

   119: void Delay(unsigned short i,unsigned short j)           //根据不同的参数,实现不同时段的延时

   120: {

   121:         unsigned short k;

   122: 

   123:         for(; i > FALSE; i--){

   124:                 k = j;

   125:                 for(; k > FALSE; k--){

   126:                         asm("nop");

   127:                         asm("nop");

   128:                         asm("nop");

   129:                         asm("nop");

   130:                 }

   131:         }

   132: }

⌨️ 快捷键说明

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