📄 com.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/EC++ Compiler V3.10A/W32 05/Nov/2001 14:53:15 #
# Copyright 1999-2001 IAR Systems. All rights reserved. #
# #
# Cpu mode = arm #
# Code model = small #
# Endian = little #
# Source file = C:\At91\software\projects\bench\Source\com.c #
# Command line = -I C:\Compil\EW23\ARM\INC\ -I ..\..\..\ -lC #
# C:\At91\software\projects\bench\IAR\ARM_external\List\ #
# -lA C:\At91\software\projects\bench\IAR\ARM_external\Li #
# st\ -o C:\At91\software\projects\bench\IAR\ARM_external #
# \Obj\ -e -s9 --debug --cpu_mode arm --code_model small #
# --endian little --cpu=arm7tdmi #
# C:\At91\software\projects\bench\Source\com.c #
# List file = C:\At91\software\projects\bench\IAR\ARM_external\List\c #
# om.lst #
# Object file = C:\At91\software\projects\bench\IAR\ARM_external\Obj\co #
# m.r79 #
# #
# #
##############################################################################
C:\At91\software\projects\bench\Source\com.c
1 //*----------------------------------------------------------------------------
2 //* ATMEL Microcontroller Software Support - ROUSSET -
3 //*----------------------------------------------------------------------------
4 //* The software is delivered "AS IS" without warranty or condition of any
5 //* kind, either express, implied or statutory. This includes without
6 //* limitation any warranty or condition with respect to merchantability or
7 //* fitness for any particular purpose, or against the infringements of
8 //* intellectual property rights of others.
9 //*----------------------------------------------------------------------------
10 //* File Name : com.c
11 //* Object : com port terminal
12 //*
13 //* 1.0 25/08/00 JPP : Creation
14 //* 1.1 15/11/00 JPP : additing wait PDC in at91_send_byte
15 //*----------------------------------------------------------------------------
16
17 #include <stdio.h>
18 #include "com.h"
19
20 //*----------------------------------------------------------------------------
21 //* Function Name : at91_open_com
22 //* Object : Open com Usart
23 //* Input Parameters : com descriptor & mode
24 //* Output Parameters : none
25 //*----------------------------------------------------------------------------
\ In segment NEARFUNC_A, align 4
\ 00000000 CODE32
26 void at91_open_com(ComDesc *USART_pt, int mode, u_short baud)
27 //* Begin
28 {
\ at91_open_com:
\ 00000000 10402DE9 STMDB SP!,{R4,LR} ;; Push
29
30 //* open usart in Asynchornous no time gard
31 at91_usart_open (USART_pt->usart,(mode|US_CLKS_MCK), baud, 0);
\ 00000004 0040A0E1 MOV R4,R0
\ 00000008 0030A0E3 MOV R3,#+0x0
\ 0000000C 0228A0E1 MOV R2,R2, LSL #+16
\ 00000010 2228A0E1 MOV R2,R2, LSR #+16
\ 00000014 000094E5 LDR R0,[R4, #+0]
\ 00000018 ........ BL at91_usart_open
32
33 //* masque all interrup and Disable all interrupts
34 USART_pt->usart->usart_base->US_IDR = 0xFFFFFFFF ;
\ 0000001C 0000E0E3 MVN R0,#+0x0
\ 00000020 001094E5 LDR R1,[R4, #+0]
\ 00000024 002091E5 LDR R2,[R1, #+0]
\ 00000028 0C0082E5 STR R0,[R2, #+12]
35
36 //* Set state
37 USART_pt->state = COM_STATE_ENABLE;
\ 0000002C 0100A0E3 MOV R0,#+0x1
\ 00000030 040084E5 STR R0,[R4, #+4]
38
39 }
\ 00000034 1080BDE8 LDMIA SP!,{R4,PC} ;; return
40 //* End
41 //*----------------------------------------------------------------------------
42 //* Function Name : at91_close_com
43 //* Object : Close com Usart
44 //* Input Parameters : com descriptor
45 //* Output Parameters : none
46 //*----------------------------------------------------------------------------
\ In segment NEARFUNC_A, align 4
\ 00000000 CODE32
47 void at91_close_com(ComDesc *USART_pt)
48 //* Begin
49 {
\ at91_close_com:
\ 00000000 10402DE9 STMDB SP!,{R4,LR} ;; Push
50 //* Close Usart
51 at91_usart_close (USART_pt->usart) ;
\ 00000004 0040A0E1 MOV R4,R0
\ 00000008 000094E5 LDR R0,[R4, #+0]
\ 0000000C ........ BL at91_usart_close
52 //* Set state
53 USART_pt->state = COM_STATE_ENABLE;
\ 00000010 0100A0E3 MOV R0,#+0x1
\ 00000014 040084E5 STR R0,[R4, #+4]
54
55 }
\ 00000018 1080BDE8 LDMIA SP!,{R4,PC} ;; return
56 //* End
57 //*----------------------------------------------------------------------------
58 //* Function Name : at91_print_frame
59 //* Object : Send a string to USART with the PDC
60 //* Input Parameters : com descriptor, String pointer, size
61 //* Output Parameters : none
62 //*----------------------------------------------------------------------------
\ In segment NEARFUNC_A, align 4, keep-with-next
\ 00000000 CODE32
63 void at91_print_frame (ComDesc *USART_pt, char * buff , u_short size)
64 //* Begin
65 {
\ at91_print_frame:
\ 00000000 70402DE9 STMDB SP!,{R4-R6,LR} ;; Push
\ 00000004 0040A0E1 MOV R4,R0
\ 00000008 0150A0E1 MOV R5,R1
\ 0000000C 0260A0E1 MOV R6,R2
66 //* Wait end PDC Transmission)
67 while(( USART_pt->usart->usart_base->US_TCR) !=0) {}
\ ??at91_print_frame_0:
\ 00000010 000094E5 LDR R0,[R4, #+0]
\ 00000014 001090E5 LDR R1,[R0, #+0]
\ 00000018 3C0091E5 LDR R0,[R1, #+60]
\ 0000001C 000050E3 CMP R0,#+0x0
\ 00000020 FAFFFF1A BNE ??at91_print_frame_0
68 //* Wait USART ready
69 while((at91_usart_get_status(USART_pt->usart) & US_TXRDY) ==0) {}
\ ??at91_print_frame_1:
\ 00000024 000094E5 LDR R0,[R4, #+0]
\ 00000028 ........ BL at91_usart_get_status
\ 0000002C FF0000E2 AND R0,R0,#+0xFF ;; Zero extend
\ 00000030 020010E3 TST R0,#+0x2
\ 00000034 FAFFFF0A BEQ ??at91_print_frame_1
70 //* set the PDC address
71 USART_pt->usart->usart_base->US_TPR = (at91_reg) buff;
^
Warning[Pe191]: type qualifier is meaningless on cast type
\ 00000038 000094E5 LDR R0,[R4, #+0]
\ 0000003C 001090E5 LDR R1,[R0, #+0]
\ 00000040 385081E5 STR R5,[R1, #+56]
72 //* set the size
73 USART_pt->usart->usart_base->US_TCR = size;
\ 00000044 0668A0E1 MOV R6,R6, LSL #+16
\ 00000048 2668A0E1 MOV R6,R6, LSR #+16
\ 0000004C 000094E5 LDR R0,[R4, #+0]
\ 00000050 001090E5 LDR R1,[R0, #+0]
\ 00000054 3C6081E5 STR R6,[R1, #+60]
74 }
\ 00000058 7080BDE8 LDMIA SP!,{R4-R6,PC} ;; return
75 //* End
76
77 //*----------------------------------------------------------------------------
78 //* Function Name : at91_print
79 //* Object : Send a string to USART
80 //* Input Parameters : com descriptor & String pointer
81 //* Output Parameters : none
82 //*----------------------------------------------------------------------------
\ In segment NEARFUNC_A, align 4, keep-with-next
\ 00000000 CODE32
83 void at91_print(ComDesc *USART_pt, char * buff)
84 //* Begin
85 {
\ at91_print:
\ 00000000 F0402DE9 STMDB SP!,{R4-R7,LR} ;; Push
\ 00000004 0040A0E1 MOV R4,R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -