找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3645|回复: 0
打印 上一主题 下一主题
收起左侧

S3C2440定时器汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:218549 发表于 2017-7-11 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

S3C2440定时器源程序如下:
  1. ;************口地址及数据符号化定义区**********************
  2. pWTCON                EQU        0x53000000
  3. pLOCKTIME        EQU        0x4c000000
  4. pCLKDIVN        EQU        0x4c000014
  5. pUPLLCON        EQU        0x4c000008
  6. pMPLLCON        EQU        0x4c000004
  7. pBWSCON                EQU        0x48000000
  8. pSRCPND                EQU        0x4a000000   ;中断源悬挂寄存器地址
  9. pINTPND                EQU        0x4a000010   ;中断悬挂寄存器地址
  10. pINTMOD                EQU        0x4a000004   ;中断模式寄存器地址
  11. pINTMSK                EQU        0x4a000008
  12. pINTSUBMSK        EQU        0x4a00001c   ;子中断源屏蔽寄存器地址
  13. pINTOFFSET        EQU        0x4a000014   ;中断源偏移地址寄存器地址

  14. pTCFG0                EQU        0x51000000        ;定时器配置寄存器0
  15. pTCFG1                EQU        0x51000004        ;定时器配置寄存器1
  16. pTCNTB4                EQU        0x5100003c        ;定时器4计数缓冲寄存器
  17. pTCON                EQU        0x51000008        ;定时器控制寄存器

  18. DATA_EREA        EQU        0x33FFFF00
  19. vCLKDIVN        EQU        0x4
  20. vUPLLCON        EQU        0x00038022
  21. vMPLLCON        EQU        0x0005c011
  22. ;*************以下为各寄存器BANK数据宽度设置数据***********
  23. DW16                EQU        (0x1)
  24. DW32                EQU        (0x2)
  25. B1_BWSCON        EQU        (DW16)
  26. B2_BWSCON        EQU        (DW16)
  27. B3_BWSCON        EQU        (DW16)
  28. B4_BWSCON        EQU        (DW32)
  29. B5_BWSCON        EQU        (DW16)
  30. B6_BWSCON        EQU        (DW32)
  31. B7_BWSCON        EQU        (DW32)
  32. ;*************Bank 0 存储器参数区**************************
  33. B0_Tacs                EQU        0x3
  34. B0_Tcos                EQU        0x3
  35. B0_Tacc                EQU        0x7
  36. B0_Tcoh                EQU        0x3
  37. B0_Tah                EQU        0x3
  38. B0_Tacp                EQU        0x1
  39. B0_PMC                EQU        0x0
  40. ;*************Bank 4 存储器参数区**************************
  41. B4_Tacs                EQU        0x1
  42. B4_Tcos                EQU        0x1
  43. B4_Tacc                EQU        0x6
  44. B4_Tcoh                EQU        0x1
  45. B4_Tah                EQU        0x1
  46. B4_Tacp                EQU        0x0
  47. B4_PMC                EQU        0x0

  48. ;*************Bank 6 SDRAM存储器参数区*********************
  49. B6_MT                EQU        0x3
  50. B6_Trcd                EQU        0x1
  51. B6_SCAN                EQU        0x1
  52. ;************* SDRAM 动态存储器所需的刷新参数区************
  53. REFEN                EQU        0x1
  54. TREFMD                EQU        0x0
  55. Trp                EQU        0x1
  56. Tsrc                EQU        0x1
  57. Tchr                EQU        0x2
  58. REFCNT                EQU        1268
  59. ;*************以下数据为CPSR中各工作模式的设置位信息*******
  60. USERMODE        EQU        0x10
  61. IRQMODE                EQU        0x12
  62. SVCMODE                EQU        0x13
  63. MODEMASK        EQU        0x1f
  64. NOINT                EQU        0xc0
  65. ;*************以下为管理模式、IRQ、及用户模式堆栈指针数据***
  66. UserStack        EQU        0x33ff4800       
  67. SVCStack        EQU        0x33ff5800
  68. IRQStack        EQU        0x33ff7000

  69. ;************以下为代码区***************
  70.         AREA        Init,CODE,READONLY
  71.         ENTRY       
  72.         EXPORT        _ENTRY
  73. _ENTRY
  74. ResetEntry
  75.         b        _reset
  76.         b        .
  77.         b        .
  78.         b        .
  79.         b        .
  80.         b        .
  81.         b        IsrIRQ
  82.         b        .
  83. ;*****************预存开机后需要提取并设置到特殊功能寄存器内存储器参数区的数据,含数据宽度、刷新模式和频率等
  84. SMRDATA
  85.         DCD  (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
  86.         DCD  ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
  87.         DCD  0
  88.         DCD  0
  89.         DCD  0
  90.         DCD  ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
  91.         DCD  0
  92.         DCD  ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
  93.         DCD  0
  94.         DCD  ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Tsrc<<18)+(Tchr<<16)+REFCNT)
  95.         DCD  0x32
  96.         DCD  0x30
  97.         DCD  0x30
  98. ;*****以下IsrIRQ为中断源判别程序***********
  99. IsrIRQ
  100.         sub        sp,sp,#4
  101.         stmfd        sp!,{r8-r9}
  102.         ldr        r9,=pINTOFFSET
  103.         ldr        r9,[r9]
  104.         ldr        r8,=HandleEINT0
  105.         add        r8,r8,r9,lsl #2
  106.         ldr        r8,[r8]
  107.         str        r8,[sp,#8]
  108.         ldmfd        sp!,{r8-r9,pc}
  109.         LTORG


  110. ;****************以下为复位异常处理程序,主要完成时钟及存储器的初始化***************
  111. _reset
  112.         ldr        r0,=pWTCON
  113.         ldr        r1,=0x0
  114.         str        r1,[r0]
  115.         ldr        r0,=pINTMSK
  116.         ldr        r1,=0xffffffff
  117.         str        r1,[r0]
  118.         ldr        r0,=pINTSUBMSK
  119.         ldr        r1,=0x7fff
  120.         str        r1,[r0]
  121.         ldr        r0,=pLOCKTIME
  122.         ldr        r1,=0x00ffffff
  123.         str        r1,[r0]
  124.         ldr        r0,=pCLKDIVN
  125.         ldr        r1,=vCLKDIVN
  126.         str        r1,[r0]
  127.         ldr        r0,=pUPLLCON
  128.         ldr        r1,=vUPLLCON
  129.         str        r1,[r0]
  130.         nop
  131.         nop
  132.         nop
  133.         nop
  134.         nop
  135.         nop
  136.         nop
  137.         ldr        r0,=pMPLLCON
  138.         ldr        r1,=vMPLLCON
  139.         str        r1,[r0]

  140. ;****设置SDRAM存储器参数,最多13个,占52字节。***
  141.                 adrl        r0,SMRDATA
  142.                 ldr        r1,=pBWSCON
  143.                 add        r2,r0,#52
  144. 0
  145.                 ldr        r3,[r0],#4
  146.                 str        r3,[r1],#4
  147.                 cmp        r2,r0
  148.                 bne        %B0
  149. ;*********初始化可能用到的不同工作模式下的堆栈区,即设置他们的堆栈指针*****
  150. InitStacks
  151.         mrs        r0,cpsr
  152.         bic        r0,r0,#MODEMASK|NOINT
  153.         orr        r1,r0,#IRQMODE
  154.         msr        cpsr_cxsf,r1
  155.         ldr        sp,=IRQStack
  156.         orr        r1,r0,#USERMODE
  157.         msr        cpsr_cxsf,r1
  158.         ldr        sp,=UserStack
  159.         ldr        pc,=Main
  160.         LTORG

  161. ;以下为主程序区
  162. Main
  163.         ldr        r0,=pINTMOD
  164.         ldr        r1,=0x0
  165.         str        r1,[r0]
  166.         ldr        r0,=HandleEINT0+0x38        ;定时器4在二级向量表中的地址
  167.         adrl        r1,HandleTime4        ;提取定时器4中断处理程序地址
  168.         str        r1,[r0]
  169.         ldr        r0,=0x20005000
  170.         ldr        r1,=0x00
  171.         str        r1,[r0]
  172.         ldr        r0,=0x20007000
  173.         ldr        r1,=0x00
  174.         str        r1,[r0]
  175.         ldr        r0,=0x20006000
  176.         ldr        r1,=0xff
  177.         str        r1,[r0]
  178.        
  179.         ldr        r0,=pTCFG0
  180.         ldr        r1,=0x0000f900
  181.         str        r1,[r0]       
  182.         ldr        r0,=pTCFG1
  183.         ldr        r1,=0x00002000
  184.         str        r1,[r0]
  185.         ldr        r0,=pTCNTB4
  186.         ldr        r1,=0x0000ADC0
  187.         str        r1,[r0]
  188.         ldr        r0,=pTCON
  189.         ldr        r1,=0x00600000
  190.         str        r1,[r0]
  191.         ldr        r0,=pTCON
  192.         ldr        r1,=0x00500000
  193.         str        r1,[r0]
  194.         ldr        r0,=pINTMSK
  195.         ldr        r1,=0xFFFFBFFF
  196.         str        r1,[r0]
  197. wait_server
  198.         b        .
  199.         mov        r0,r5
  200.         bic        r0,r0,#MODEMASK|NOINT
  201.         orr        r1,r0,#USERMODE
  202.         msr        cpsr_cxsf,r1
  203.         b        wait_server
  204.         LTORG
  205. HandleTime4
  206.         stmfd        sp!,{r0,r1,lr}
  207.         ldr        r1,=int_count
  208.         ldr        r1,[r1]
  209.         ldr        r0,=0x20005000
  210.         str        r1,[r0]
  211.         cmp        r1,#16
  212.         beq        step1
  213.         add r1,r1,#1
  214.         ldr        r0,=int_count
  215.         ;mov         r1,#0
  216.         str        r1,[r0]
  217.         b        step2
  218. step1        ldr        r0,=int_count
  219.         mov        r1,#1
  220.         str        r1,[r0]
  221. step2        ldr        r0,=pINTSUBMSK
  222. ……………………

  223. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
实验十定时器qrs10_2.rar (1.96 KB, 下载次数: 11)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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