ytflash66 2022-06-25 20:01 采纳率: 50%
浏览 38
已结题

简单而又不简单的51单片机编程问题

#include <REGX52.H>
#include "T.h"
#include "Delay.h"
#include "LCD1602.h"

unsigned char jishu=0;
//unsigned char KeyNum;

void main()
{
LCD_Init();
T_Init();
while(1)
{
LCD_ShowNum(2,7,jishu,2);
}
}

void mm() interrupt 1
{
jishu++;
if(P3_4==0)
{jishu++;}

}

void m() interrupt 3
{
jishu--;
if(jishu<0)
{jishu=99;}
}

中断模块
#include <REGX52.H>

/**

void T_Init(void)
{
TMOD= 0x66; //设置定时器模式
TL0=TH0=256-1; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0=1;

TL1=TH1=256-1;        //设置定时初值
TF1 = 0;        //清除TF1标志
TR1 = 1;        //定时器1开始计时
ET1=1;
EA=1;

}

!问题!
再主函数方面,我用lcd1602显示0-99
用中断函数计数器通过按键一二控制加减
但是我设置的是小于0时变成99
但是实际操作是55,如果程序改成if(jishu==-1)则程序正常
问题很小,求解答

  • 写回答

1条回答 默认 最新

  • hestering 2022-06-25 20:45
    关注

    你的计数是unsigned char是无符号数,取值范围就是0-255,你让一个无符号数<0怎么运行,jishu 0-1就是255,-1在unsigned char的时候自动转化成255就符合你的需求了,你可以吧jishu的类型改成char,不要用unsigned char

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月3日
  • 已采纳回答 6月25日
  • 创建了问题 6月25日

悬赏问题

  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私