找回密码
 立即注册
楼主: 475***

外STC8G部中断0和1产生了中断但是程序执行异常,变量++不执行

[复制链接]

该用户从未签到

2

主题

9

回帖

102

积分

注册会员

积分
102
 楼主| 发表于 2023-12-3 00:15:14 | 显示全部楼层
在此

韦根卡读卡程序.rar

43.48 KB, 下载次数: 8

回复 送花

使用道具 举报

该用户从未签到

2

主题

9

回帖

102

积分

注册会员

积分
102
 楼主| 发表于 2023-12-3 08:31:16 来自手机 | 显示全部楼层
huhuan 发表于 2023-12-3 00:09
你把程序源码打包过来 ,看看,,

程序已经上传了
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

    积分
    4156
    发表于 2023-12-3 09:08:50 | 显示全部楼层
    很正常,  楼主把
       k=+1;
       j=+1;
    赋值成 常量了 , 永远等于 1  

    要写成 :
       k=k+1;
       j=j+1;
    或者:
       k++;
       j++;
    即可.

    楼主C语言语法不过关啊~~~





    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 20:17
  • 签到天数: 173 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1367

    积分

    荣誉版主

    积分
    1367
    发表于 2023-12-3 09:23:46 | 显示全部楼层
       k+=1;
       j+=1;
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    2

    主题

    9

    回帖

    102

    积分

    注册会员

    积分
    102
     楼主| 发表于 2023-12-3 11:07:30 来自手机 | 显示全部楼层
    已经改成k++也不行
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 169 天

    [LV.7]常住居民III

    43

    主题

    369

    回帖

    1107

    积分

    金牌会员

    静坐常思己过,闲谈莫论人非

    积分
    1107
    发表于 2023-12-3 12:33:58 | 显示全部楼层
    哪有=+1这样的写法,是+=1
    处事要代人所想,读书需切己用功
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 164 天

    [LV.7]常住居民III

    9

    主题

    128

    回帖

    150

    积分

    注册会员

    积分
    150
    发表于 2023-12-3 15:50:46 | 显示全部楼层
    服了你,前面说外部中断进去了,K和j的值不加,永远是1,那是你程序中写的k=+1;这个不管怎么执行都是1,修改成k+=1;或者k++;都行
    后面有是仿真又有问题,都怀疑你有没有手动启动这个中断
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    2

    主题

    9

    回帖

    102

    积分

    注册会员

    积分
    102
     楼主| 发表于 2023-12-3 18:18:06 | 显示全部楼层
    huhuan 发表于 2023-12-3 15:50
    服了你,前面说外部中断进去了,K和j的值不加,永远是1,那是你程序中写的k=+1;这个不管怎么执行都是1,修 ...

    #include <stc8g.h>
    #include <string.h>
    #include <stdio.h>    // 标准输入输出定义
    #include <intrins.h>

    sbit WIEGAND_D0 = P3^2;
    sbit WIEGAND_D1 = P3^3;
    sbit LED = P5^5;
    unsigned char i=0;
    unsigned char k ;
    unsigned char j ;
    volatile unsigned char wiegand_buffer[26];
    volatile unsigned char wiegand_index = 0;

    void ExternalInterrupt0() interrupt 0
    {
        k=1;
    }

    void ExternalInterrupt1() interrupt 2
    {
        j=2;
    }

    void Init(void)
    {
        P3M0 = 0x00;
        P3M1 = 0x00;
        P5M0 |= 0x20;
        P5M1 &= ~0x20;
        EA  = 1;//总中断
        EX0 = 1;//外部中断0
        IT0 = 1;//外部中断0下降沿触发
        EX1 = 1;
        IT1 = 1;
    }
    void main()
    {
        Init();
        while (1) {
        }
    }
    改成这样还是不行,就赋个值也不行,到底错在哪里了?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 164 天

    [LV.7]常住居民III

    9

    主题

    128

    回帖

    150

    积分

    注册会员

    积分
    150
    发表于 2023-12-3 19:49:16 | 显示全部楼层
    重装软件,加长变量名,可能有冲突
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 23:10 , Processed in 0.067708 second(s), 62 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表