搜索
bottom↓
回复: 5

有完整的LGT8F328D的头文件吗?PCINT3_vect中断地址该怎么定义?

[复制链接]

出0入0汤圆

发表于 2015-4-19 16:30:29 | 显示全部楼层 |阅读模式
因项目需要使用PE4的电平变化中断,atmega328的头文件里没有定义PCINT3_vect
按照88A的定义:
#define PCINT3_vect                _VECTOR(26)
无法使用

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2015-4-20 10:56:30 | 显示全部楼层
使用了 lgt8f88a的头文件
  1. #include<lgt8f88a_full.h>


  2. #include <avr/interrupt.h>

  3. void main()
  4. {
  5.         while(1);
  6.        
  7. }

  8. ISR(PCINT3_vect)
  9. {
  10.         PORTC=0x00;
  11.         PORTC=0x10;
  12. }
复制代码


生成的汇编文件

  1. main.elf:     file format elf32-avr

  2. Sections:
  3. Idx Name          Size      VMA       LMA       File off  Algn
  4.   0 .text         000000a4  00000000  00000000  00000054  2**1
  5.                   CONTENTS, ALLOC, LOAD, READONLY, CODE
  6.   1 .debug_aranges 00000020  00000000  00000000  000000f8  2**0
  7.                   CONTENTS, READONLY, DEBUGGING
  8.   2 .debug_pubnames 0000002b  00000000  00000000  00000118  2**0
  9.                   CONTENTS, READONLY, DEBUGGING
  10.   3 .debug_info   00000085  00000000  00000000  00000143  2**0
  11.                   CONTENTS, READONLY, DEBUGGING
  12.   4 .debug_abbrev 00000052  00000000  00000000  000001c8  2**0
  13.                   CONTENTS, READONLY, DEBUGGING
  14.   5 .debug_line   00000078  00000000  00000000  0000021a  2**0
  15.                   CONTENTS, READONLY, DEBUGGING
  16.   6 .debug_frame  00000030  00000000  00000000  00000294  2**2
  17.                   CONTENTS, READONLY, DEBUGGING
  18.   7 .debug_str    00000066  00000000  00000000  000002c4  2**0
  19.                   CONTENTS, READONLY, DEBUGGING

  20. Disassembly of section .text:

  21. 00000000 <__vectors>:
  22.    0:        0c 94 34 00         jmp        0x68        ; 0x68 <__ctors_end>
  23.    4:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  24.    8:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  25.    c:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  26.   10:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  27.   14:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  28.   18:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  29.   1c:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  30.   20:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  31.   24:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  32.   28:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  33.   2c:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  34.   30:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  35.   34:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  36.   38:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  37.   3c:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  38.   40:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  39.   44:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  40.   48:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  41.   4c:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  42.   50:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  43.   54:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  44.   58:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  45.   5c:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  46.   60:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>
  47.   64:        0c 94 3e 00         jmp        0x7c        ; 0x7c <__bad_interrupt>

  48. 00000068 <__ctors_end>:
  49.   68:        11 24               eor        r1, r1
  50.   6a:        1f be               out        0x3f, r1        ; 63
  51.   6c:        cf ef               ldi        r28, 0xFF        ; 255
  52.   6e:        d8 e0               ldi        r29, 0x08        ; 8
  53.   70:        de bf               out        0x3e, r29        ; 62
  54.   72:        cd bf               out        0x3d, r28        ; 61
  55.   74:        0e 94 40 00         call        0x80        ; 0x80 <main>
  56.   78:        0c 94 50 00         jmp        0xa0        ; 0xa0 <_exit>

  57. 0000007c <__bad_interrupt>:
  58.   7c:        0c 94 00 00         jmp        0        ; 0x0 <__vectors>

  59. 00000080 <main>:
  60. #include <avr/interrupt.h>



  61. void main()
  62. {
  63.   80:        ff cf               rjmp        .-2              ; 0x80 <main>

  64. 00000082 <__vector_26>:
  65.         while(1);
  66.        
  67. }

  68. ISR(PCINT3_vect)
  69. {
  70.   82:        1f 92               push        r1
  71.   84:        0f 92               push        r0
  72.   86:        0f b6               in        r0, 0x3f        ; 63
  73.   88:        0f 92               push        r0
  74.   8a:        11 24               eor        r1, r1
  75.   8c:        8f 93               push        r24
  76.         PORTC=0x00;
  77.   8e:        18 b8               out        0x08, r1        ; 8
  78.         PORTC=0x10;
  79.   90:        80 e1               ldi        r24, 0x10        ; 16
  80.   92:        88 b9               out        0x08, r24        ; 8
  81. }
  82.   94:        8f 91               pop        r24
  83.   96:        0f 90               pop        r0
  84.   98:        0f be               out        0x3f, r0        ; 63
  85.   9a:        0f 90               pop        r0
  86.   9c:        1f 90               pop        r1
  87.   9e:        18 95               reti

  88. 000000a0 <_exit>:
  89.   a0:        f8 94               cli

  90. 000000a2 <__stop_program>:
  91.   a2:        ff cf               rjmp        .-2              ; 0xa2 <__stop_program>
复制代码


地址0x006C处应该是 PCINT3_vect的向量中断,结果 在 0x0068处已经开始执行main了

出0入0汤圆

发表于 2015-4-20 14:16:29 | 显示全部楼层
是26么?

出0入0汤圆

发表于 2015-4-20 14:16:51 | 显示全部楼层
是26么?

出0入0汤圆

 楼主| 发表于 2015-4-20 16:00:31 | 显示全部楼层
在淘宝上咨询了 官方
需要添加 start.S 文件

  1. #if __AVR_MEGA__
  2.   #define XJMP jmp
  3.   #define XCALL call
  4. #else
  5.   #define XJMP rjmp
  6.   #define XCALL rcall
  7. #endif

  8. .section .vectors,"ax",@progbits
  9.         .weak __vector_26
  10.         ;.set __vector_17, __bad_interrupt
  11.         XJMP  __vector_26
  12.         .weak __vector_27
  13.         ;.set __vector_18, __bad_interrupt
  14.         XJMP  __vector_27
  15.         .weak __vector_28
  16.         ;.set __vector_17, __bad_interrupt
  17.         XJMP  __vector_28
  18.         .weak __vector_29
  19.         ;.set __vector_18, __bad_interrupt
  20.         XJMP  __vector_29
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-4-20 16:02:12 | 显示全部楼层

是27
问题已经解决
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-4 00:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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