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 (标签-matlab)
  • ¥15 深度学习目标检测现在框架加注意力的创新可以投几区?
  • ¥15 PdfiumViewer pdf转图片
  • ¥15 利用Java连接API接口总是出问题
  • ¥15 请教一个关于镜头标定,棋盘格格子大小的问题(畸变测试)
  • ¥15 安装GroudingDINO RuntimeError: Error compiling objects for extension
  • ¥15 关于推送项目到github的问题
  • ¥15 急!C++指针编写相关的问题
  • ¥15 kerberos身份认证配置问题
  • ¥30 用python写一个多签情况下波场的代理资源和回收资源