找回密码
 立即注册
楼主: 4758866

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-03-17 08:52:50

2

主题

11

回帖

132

积分

注册会员

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

韦根卡读卡程序.rar

43.48 KB, 下载次数: 47

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-03-17 08:52:50

2

主题

11

回帖

132

积分

注册会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

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

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





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:515
  • 最近打卡:2025-05-03 05:51:43

24

主题

515

回帖

994

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-03-17 08:52:50

2

主题

11

回帖

132

积分

注册会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:391
  • 最近打卡:2025-05-02 09:44:56

45

主题

381

回帖

1575

积分

金牌会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:389
  • 最近打卡:2025-05-02 23:51:10

10

主题

143

回帖

352

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-03-17 08:52:50

2

主题

11

回帖

132

积分

注册会员

积分
132
发表于 2023-12-3 18:18:06 | 显示全部楼层
huh*** 发表于 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) {
    }
}
改成这样还是不行,就赋个值也不行,到底错在哪里了?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:389
  • 最近打卡:2025-05-02 23:51:10

10

主题

143

回帖

352

积分

中级会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 12:54 , Processed in 0.142411 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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