ORG 0H
LJMP MAIN
org 03h
ljmp inta ;INT0中断
ORG 13H
LJMP INTb ;INT1 INT
ORG 23H
LJMP INTc ;SIO INT
ORG 30H
MAIN:
MOV SP,#0E0H ;INIT SP=E0H
;
; CONFIGURE UART....
MOV T3CON,#82h
MOV T3FD,#12h
MOV SCON,#52h
SETB IT1 //INT1负边沿触发
SETB EX1 //INT1中断有效
SETB ES
SETB IT0 //INT0负边沿触发
SETB EX0 //INT0中断有效
SETB EA
;
;********* MIN PROC
;
WORK:
LJMP WORK
;******** 时钟中断,INT0
;
INTa:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
;
LTE:
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
;
;******** 按键中断,INT1
;
INTb:
PUSH PSW
PUSH ACC
PUSH DPL
PUSH DPH
mov a,#31h
lcall sou1 //串行口输出子程序
mov a,#0dh
lcall sou1 //串行口输出子程序
mov a,#0ah
lcall sou1 //串行口输出子程序
LCALL WAT4
;
IBE:
POP DPH
POP DPL
POP ACC
POP PSW
RETI
;
C程序
#include <ADuC834.h>
#include <stdio.h>
void service_int1 () interrupt 2 using 2
{
printf("a");
}
main ()
{
// char a;
//Configure UART ,9600波特率
T3CON = 0x82;
T3FD = 0x12;
SCON = 0x52;
IT0=1; //负边沿触发
EX0=1; //开中断INT0
IT1=1; //负边沿触发
EX1=1; //开中断1
ES=1; //开串行口中断
EA=1; //开所有中断
do{ }while(1);
}
硬件一样
汇编有输出
C没有输出
有人知道为什么吗?
谢谢