4758866 发表于 2023-12-3 00:15:14

在此

4758866 发表于 2023-12-3 08:31:16

huhuan 发表于 2023-12-3 00:09
你把程序源码打包过来 ,看看,,

程序已经上传了

LAOXU 发表于 2023-12-3 09:08:50

很正常,楼主把
   k=+1;
   j=+1;
赋值成 常量了 , 永远等于 1{:lol:}

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

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





社区闲人 发表于 2023-12-3 09:23:46

   k+=1;
   j+=1;

4758866 发表于 2023-12-3 11:07:30

已经改成k++也不行

rengran 发表于 2023-12-3 12:33:58

哪有=+1这样的写法,是+=1

huhuan 发表于 2023-12-3 15:50:46

{:4_176:}服了你,前面说外部中断进去了,K和j的值不加,永远是1,那是你程序中写的k=+1;这个不管怎么执行都是1,修改成k+=1;或者k++;都行
后面有是仿真又有问题,{:4_197:}都怀疑你有没有手动启动这个中断

4758866 发表于 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;
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) {
    }
}
改成这样还是不行,就赋个值也不行,到底错在哪里了?

huhuan 发表于 2023-12-3 19:49:16

重装软件,加长变量名,可能有冲突
页: 1 [2]
查看完整版本: 外STC8G部中断0和1产生了中断但是程序执行异常,变量++不执行