[51单片机] 以下代码哪里调用了138和245?

[复制链接]
1130|7
 楼主| 快鲨1 发表于 2019-2-28 07:47 | 显示全部楼层 |阅读模式
本帖最后由 快鲨1 于 2019-2-28 22:58 编辑
  1. #include<reg52.h>

  2. sbit ADDR0 = P1^0;
  3. sbit ADDR1 = P1^1;
  4. sbit ADDR2 = P1^2;
  5. sbit ADDR3 = P1^3;
  6. sbit ENLED = P1^4;

  7. unsigned char code LedChar[]={
  8.         0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
  9.         0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
  10.         };
  11. unsigned char LedBuff[6]={
  12.         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
  13.         };

  14. unsigned char i = 0;
  15. unsigned int cnt = 0;
  16. unsigned char flag1s = 0;

  17. void main()
  18. {
  19.         
  20.         unsigned long sec = 0;
  21.         

  22.         ENLED = 0;
  23.         ADDR3 = 1;
  24.         TMOD = 0x01;
  25.         TH0 = 0xFC;
  26.         TL0 = 0x67;
  27.         TR0 = 1;
  28.         EA = 1;
  29.         ET0 = 1;

  30.         while(1)
  31.         {        
  32.                 if(flag1s == 1)                  
  33.                 {
  34.                         flag1s = 0;
  35.                         sec++;
  36.                         LedBuff[0] = LedChar[sec%10];
  37.                         LedBuff[1] = LedChar[sec/10%10];
  38.                         LedBuff[2] = LedChar[sec/100%10];
  39.                         LedBuff[3] = LedChar[sec/1000%10];
  40.                         LedBuff[4] = LedChar[sec/10000%10];
  41.                         LedBuff[5] = LedChar[sec/100000%10];
  42.                 }

  43.                                        
  44.         }
  45. }

  46. void InterruptTime0() interrupt 1               
  47. {
  48.          TH0 = 0xFC;
  49.          TL0 = 0x67;
  50.          cnt++;
  51.          if(cnt >= 1000)
  52.          {
  53.                  cnt = 0;
  54.                 flag1s = 1;
  55.          }

  56.          P0 = 0xFF;
  57.      switch(i)
  58.          {
  59.                  case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0];break;
  60.                  case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1];break;
  61.                   case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2];break;
  62.                  case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=LedBuff[3];break;
  63.                  case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=LedBuff[4];break;
  64.                  case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[5];break;
  65.                  default:break;
  66.          }
  67. }
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
这一段是调用了138还是245,那另一个在哪里?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
airwill 发表于 2019-2-28 08:42 | 显示全部楼层
这要看你的硬件电路的. 通常这两个芯片相关, 会常常在访问 XRAM 时作用
Cjy_JDxy 发表于 2019-2-28 09:01 | 显示全部楼层
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0];break;
                 case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1];break;
                  case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2];break;
                 case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=LedBuff[3];break;
                 case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=LedBuff[4];break;
                 case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[5];break;
感觉这一段应该是操作138的
Cjy_JDxy 发表于 2019-2-28 09:02 | 显示全部楼层
你硬件电路什么样的?
 楼主| 快鲨1 发表于 2019-2-28 22:59 | 显示全部楼层
Cjy_JDxy 发表于 2019-2-28 09:02
你硬件电路什么样的?

你好,我已经添加了电路的图片了,能给我解答一下吗,麻烦你了!
你瞅啥 发表于 2019-2-28 23:14 | 显示全部楼层
二十多年前的老电路就不要用了。
Cjy_JDxy 发表于 2019-3-1 08:41 | 显示全部楼层
我感觉245应该接在P0口上,有P0的就是和245有关的
 楼主| 快鲨1 发表于 2019-3-2 23:31 | 显示全部楼层
Cjy_JDxy 发表于 2019-3-1 08:41
我感觉245应该接在P0口上,有P0的就是和245有关的

谢谢,我已经找到了,这个开发板竟然直接把248的DIR脚直接5v上都不接单片机引脚了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

45

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部