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

📄 lesson4_1.lst

📁 天祥的所有pic 源程序
💻 LST
字号:
     1: #include<pic.h>

     2: #define uchar unsigned char

     3: #define uint  unsigned int

     4: __CONFIG(0x3B31);

     5: const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

     6:                         0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

     7: uchar key_num;

     8: void delay(uint x);

     9: void init();

    10: void scan();

    11: void didi(uchar num);

    12: void disp();

    13: void main()

    14: {

    15:         init();

    16:         while(1)

    17:         {

    18:                 scan();

    19:                 disp();

    20:         }       

    21: }

    22: void delay(uint x)

    23: {

    24:         uint a,b;

    25:         for(a=x;a>0;a--)

    26:                 for(b=110;b>0;b--);

    27: }

    28: void init()

    29: {

    30:         TRISB=0x0f;

    31:         TRISD=0;

    32:         TRISA=0;

    33:         TRISE0=0;

    34:         RE0=0;

    35:         PORTD=0;

    36:         PORTA=0xff;

    37: }

    38: void scan()

    39: {

    40:         uchar key_tem;

    41:         PORTB=0x7f;//0111 1111

    42:         key_num=PORTB;

    43:         key_num=key_num&0x0f;

    44:         if(key_num!=0x0f)

    45:         {

    46:                 delay(10);

    47:                 key_num=PORTB;

    48:                 key_num=key_num&0x0f;

    49:                 if(key_num!=0x0f)

    50:                 {

    51:                         key_tem=key_num;

    52:                         didi(1);

    53:                         while(key_tem!=0x0f)

    54:                         {

    55:                                 key_tem=PORTB;

    56:                                 key_tem=key_tem&0x0f;

    57:                         }       

    58:                         key_num=key_num|0x70;

    59:                 }

    60:         }

    61:         else

    62:         {

    63:                 PORTB=0xBf;//1011 1111

    64:                 key_num=PORTB;

    65:                 key_num=key_num&0x0f;

    66:                 if(key_num!=0x0f)

    67:                 {

    68:                         delay(10);

    69:                         key_num=PORTB;

    70:                         key_num=key_num&0x0f;

    71:                         if(key_num!=0x0f)

    72:                         {

    73:                                 key_tem=key_num;

    74:                                 didi(1);

    75:                                 while(key_tem!=0x0f)

    76:                                 {

    77:                                         key_tem=PORTB;

    78:                                         key_tem=key_tem&0x0f;

    79:                                 }       

    80:                                 key_num=key_num|0xb0;

    81:                         }

    82:                 }

    83:                 else

    84:                 {

    85:                         PORTB=0xdf;//1101 1111

    86:                         key_num=PORTB;

    87:                         key_num=key_num&0x0f;

    88:                         if(key_num!=0x0f)

    89:                         {

    90:                                 delay(10);

    91:                                 key_num=PORTB;

    92:                                 key_num=key_num&0x0f;

    93:                                 if(key_num!=0x0f)

    94:                                 {

    95:                                         key_tem=key_num;

    96:                                         didi(1);

    97:                                         while(key_tem!=0x0f)

    98:                                         {

    99:                                                 key_tem=PORTB;

   100:                                                 key_tem=key_tem&0x0f;

   101:                                         }       

   102:                                         key_num=key_num|0xd0;

   103:                                 }

   104:                         }

   105:                         else

   106:                         {

   107:                                 PORTB=0xef;//1011 1111

   108:                                 key_num=PORTB;

   109:                                 key_num=key_num&0x0f;

   110:                                 if(key_num!=0x0f)

   111:                                 {

   112:                                         delay(10);

   113:                                         key_num=PORTB;

   114:                                         key_num=key_num&0x0f;

   115:                                         if(key_num!=0x0f)

   116:                                         {

   117:                                                 key_tem=key_num;

   118:                                                 didi(1);

   119:                                                 while(key_tem!=0x0f)

   120:                                                 {

   121:                                                         key_tem=PORTB;

   122:                                                         key_tem=key_tem&0x0f;

   123:                                                 }       

   124:                                                 key_num=key_num|0xe0;

   125:                                         }

   126:                                 }

   127:                         }       

   128:                 }               

   129:         }

   130: }

   131: void disp()

   132: {

   133:         switch(key_num)

   134:         {

   135:                 case 0xee:PORTD=table[0];break;//1110

   136:                 case 0xed:PORTD=table[1];break;//1101

   137:                 case 0xeb:PORTD=table[2];break;//1011

   138:                 case 0xe7:PORTD=table[3];break;//0111

   139:                 case 0xde:PORTD=table[4];break;

   140:                 case 0xdd:PORTD=table[5];break;

   141:                 case 0xdb:PORTD=table[6];break;

   142:                 case 0xd7:PORTD=table[7];break;

   143:                 case 0xbe:PORTD=table[8];break;

   144:                 case 0xbd:PORTD=table[9];break;

   145:                 case 0xbb:PORTD=table[10];break;

   146:                 case 0xb7:PORTD=table[11];break;

   147:                 case 0x7e:PORTD=table[12];break;

   148:                 case 0x7d:PORTD=table[13];break;

   149:                 case 0x7b:PORTD=table[14];break;

   150:                 case 0x77:PORTD=table[15];break;

   151:         }

   152: }

   153: 

   154: void didi(uchar num)

   155: {

   156:         uchar di_num;

   157:         for(di_num=num;di_num>0;di_num--)

   158:         {

   159:                 RE0=1;

   160:                 delay(50);

   161:                 RE0=0;

   162:                 delay(20);

   163:         }

   164: }

⌨️ 快捷键说明

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