5844|5

24

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

为什么这里说RBPU还要定义的怎么回事 [复制链接]

//-----------------------------------------------------------------
//  名称: RB端口电平变化中断控制两位数码管开关、加减显示
//-----------------------------------------------------------------
//  说明: 本例与此前的K1~K4控制两位数码管开、关、加、减的程序功能
//        类似,但本例用RB端口电平变化中断程序实现.
//
//-----------------------------------------------------------------
#include
#define INT8U   unsigned char
#define _XTAL_FREQ 1000000UL

//按键定义
#define K1_DOWN() (RB4 == 0)
#define K2_DOWN() (RB5 == 0)
#define K3_DOWN() (RB6 == 0)
#define K4_DOWN() (RB7 == 0)

INT8U count = 0;        //显示计数初值为0
INT8U show_on = 1;      //显示开关标志
//数字0~9的共阴数码管段码表
const INT8U SEG_CODE[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//-----------------------------------------------------------------
// 数码管显示
//-----------------------------------------------------------------
void display()
{
   if(!show_on)
    {
        PORTC=0x00;PORTD=0xFF;return;
    }
   PORTD=0xFF;
   PORTC=SEG_CODE[count/10];
   PORTD=~(1<<0);
   __delay_ms(2);
   PORTD=0xFF;
   PORTC=SEG_CODE[count%10];
   PORTD=~(1<<1);
   __delay_ms(2);
}

//-----------------------------------------------------------------
// 延时函数
//-----------------------------------------------------------------
void delayms(INT8U x)
{
   for (INT8U i = 0; i < x; i++)
     for (INT8U j = 246; j > 0; j--) NOP();
}

//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{
   INT8U Recent_Key=0xFF;
   TRISC=0x00;TRISD=0x00;
   PORTC=0xFF;PORTD=0xFF;

   GIE=1;
   RBIE=1;
   TRISB=0xFF;
   RBPU=0;

   while(1)display();
}

//-----------------------------------------------------------------
// RB端口电平变化中断处理函数
//-----------------------------------------------------------------
void interrupt RB_Port_Change_ISR()
{
    if (RBIF==1)
    {
          delayms(5);
          if    (K1_DOWN())show_on=1;
          else if(K2_DOWN())show_on=0;
          if(show_on && K3_DOWN())
          {
            if(count<99)count++;
          }
          else if (show_on && K4_DOWN() )
          {
            if (count !=0)count--;
          }
          RBIF=0;
    }
}














Build E:\zzg\01 Foundation\13 RB Level Change Interrupt Control 2Bits-SEGDSY\C16\RB Level Change Interrupt Control 2Bits-SEGDSY for device 16F877A

Using driver C:\Program Files (x86)\HI-TECH Software\PICC\9.83\bin\picc.exe



Make: The target "E:\zzg\01 Foundation\13 RB Level Change Interrupt Control 2Bits-SEGDSY\C16\main.p1" is out of date.

Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\9.83\bin\picc.exe" --pass1 "E:\zzg\01 Foundation\13 RB Level Change Interrupt Control 2Bits-SEGDSY\C16\main.c" -q --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"

Error   [192] E:\zzg\01 Foundation\13 RB Level Change Interrupt Control 2Bits-SEGDSY\C16\main.c; 62.1 undefined identifier "RBPU"



********** Build failed! **********




最新回复

具体什么型号? 很多型号的RBPU只是某个寄存器的一位, 我原来用汇编时也出错,后来找到对应型号inc头文件查看,却是这样的表达:OPTION_REG,NOT_RBPU \ [attach]211403[/attach]   详情 回复 发表于 2015-8-20 10:45
点赞 关注
 

回复
举报

24

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
各位大神求解答解答
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

板凳
 
有个错误是“RBPU”找不到定义
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(初级)

4
 
强仔00001 发表于 2015-8-18 22:52
有个错误是“RBPU”找不到定义

怎么会这样呢,明明RBPU是使B口上拉,还要定义吗。求解答

点评

不清楚,你最好进去你器件的头文件看看有没有这个寄存器的定义,或者是你写错了  详情 回复 发表于 2015-8-19 12:10
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

5
 
嘻嘻嘻嘻啊啊 发表于 2015-8-19 08:05
怎么会这样呢,明明RBPU是使B口上拉,还要定义吗。求解答

不清楚,你最好进去你器件的头文件看看有没有这个寄存器的定义,或者是你写错了
 
 
 

回复

37

帖子

3

TA的资源

一粒金砂(中级)

6
 
具体什么型号? 很多型号的RBPU只是某个寄存器的一位, 我原来用汇编时也出错,后来找到对应型号inc头文件查看,却是这样的表达:OPTION_REG,NOT_RBPU
\



 
个人签名专业:PIC单片机软硬件开发 http://shop104728125.taobao.com
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表