📄 main.lst
字号:
ANSI-C/cC++ Compiler for HC12 V-5.0.24 Build 4047, Feb 17 2004
1: /*
2: * Copyright (c) 2004, Freescale Semiconductor
3: * Freescale Willy Note
4: *
5: * File name : main.c
6: * Project name: MSCAN12_DP256
7: *
8: * Author : Rebeca Delgado
9: * Department : RTAC Americas
10: *
11: * Description : a brief description of the module.
12: * Another line of the description.
13: *
14: * History :
15: * 21/07/2004 : Initial Development. (A10021)
16: */
17:
18: #include <hidef.h> /* for EnableInterrupts macro */
19: #include <mc9s12dp256.h> /* include peripheral declarations */
20:
21: #pragma LINK_INFO DERIVATIVE "mc9s12dp256b"
22:
23: /* ID Definition */
24: #define ST_ID_100 0x20000000 /* Standard Id 0x100 formatted to be loaded
25: * in IDRx Registers in Tx Buffer
26: */
27:
28: /* Acceptance Code Definitions */
29: #define ACC_CODE_ID100 0x2000
30: #define ACC_CODE_ID100_HIGH ((ACC_CODE_ID100&0xFF00)>>8)
31: #define ACC_CODE_ID100_LOW (ACC_CODE_ID100&0x00FF)
32:
33:
34: /* Mask Code Definitions */
35: #define MASK_CODE_ST_ID 0x0007
36: #define MASK_CODE_ST_ID_HIGH ((MASK_CODE_ST_ID&0xFF00)>>8)
37: #define MASK_CODE_ST_ID_LOW (MASK_CODE_ST_ID&0xFF)
38:
39: /* Error Flags Definition */
40: #define NO_ERR 0x00
41: #define ERR_BUFFER_FULL 0x80
42:
43: /* Functions Prototypes */
44: void CANInit(void);
45: unsigned char CAN0SendFrame(unsigned long id, unsigned char priority, unsigned char length, unsigned char *txdata );
46: void Delay(void);
47:
48: void main () {
Function: main
Source : D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\Sources\main.c
Options : -Env"GENPATH=D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256;D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\bin;D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\prm;D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\cmd;D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\Sources;D:\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\lib;D:\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\src;D:\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\include" -Env"LIBPATH=D:\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\include" -Env"OBJPATH=D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\bin" -Env"TEXTPATH=D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\bin" -Lasm=%n.lst -Mb -ObjN="D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\MSCAN12_DP256_Data\P&E_ICD\ObjectCode\main.c.o" -WmsgSd1106
0000 1b96 LEAS -10,SP
49:
50: unsigned char errorflag = NO_ERR;
0002 6989 CLR 9,SP
51: unsigned char txbuff[] = "ABCDEFGH";
0004 c641 LDAB #65
0006 6b80 STAB 0,SP
0008 52 INCB
0009 6b81 STAB 1,SP
000b 52 INCB
000c 6b82 STAB 2,SP
000e 52 INCB
000f 6b83 STAB 3,SP
0011 52 INCB
0012 6b84 STAB 4,SP
0014 52 INCB
0015 6b85 STAB 5,SP
0017 52 INCB
0018 6b86 STAB 6,SP
001a 52 INCB
001b 6b87 STAB 7,SP
001d 6988 CLR 8,SP
52:
53: CANInit(); /* Initialize MSCAN12 Module */
001f 4a000000 CALL CANInit,PAGE(CANInit)
54:
55: while(!(CAN0CTL0&0x10)); /* Wait for Synchronization */
0023 1f000010fb BRCLR _CAN0CTL0,#16,*+0 ;abs = 0023
56:
57: CAN0RFLG = 0xC3; /* Reset Receiver Flags
0028 c6c3 LDAB #195
002a 7b0000 STAB _CAN0RFLG
58: *
59: * 0b11000011
60: * ||||||||__ Receive Buffer Full Flag
61: * |||||||___ Overrun Interrupt Flag
62: * ||||||____
63: * |||||_____>- Transmitter Status Bits
64: * ||||______
65: * |||_______>- Receiver Status Bits
66: * ||________ CAN Status Change Interrupt Flag
67: * |_________ Wake-Up Interrupt Flag
68: */
69:
70: CAN0RIER = 0x01; /* Enable Receive Buffer Full Interrupt
002d 8601 LDAA #1
002f 7a0000 STAA _CAN0RIER
71: *
72: * 0b00000001
73: * ||||||||__ Receive Buffer Full Int enabled
74: * |||||||___ Overrun Int disabled
75: * ||||||____
76: * |||||_____>- Tx Status Change disabled
77: * ||||______
78: * |||_______>- Rx Status Change disabled
79: * ||________ Status Change Int disabled
80: * |_________ Wake-Up Int disabled
81: */
82:
83:
84:
85:
86:
87: EnableInterrupts;
0032 10ef CLI
88:
89: for (;;) {
90: errorflag = CAN0SendFrame((ST_ID_100), 0x00, sizeof(txbuff)-1, txbuff);
0034 c7 CLRB
0035 87 CLRA
0036 3b PSHD
0037 8620 LDAA #32
0039 3b PSHD
003a 37 PSHB
003b c608 LDAB #8
003d 37 PSHB
003e 1a86 LEAX 6,SP
0040 b754 TFR X,D
0042 4a000000 CALL CAN0SendFrame,PAGE(CAN0SendFrame)
0046 1b86 LEAS 6,SP
0048 6b89 STAB 9,SP
91: Delay();
004a 4a000000 CALL Delay,PAGE(Delay)
004e 20e4 BRA *-26 ;abs = 0034
92: }
93:
94: }
95:
96: /*
97: * CANInit: a description of the function functionName.
98: *
99: * Bit Timing Definitions
100: * ----------------------
101: *
102: * CAN Clock Source (External oscillator) = 16Mhz
103: * BitRate = 125Khz
104: * Total Time Quanta = 16
105: * Sincronization Jump Width = 4 Time Quanta
106: * 1 sample
107: * Sample point at 75% of Bit Timing
108: *
109: * CAN_BRP = ((CAN Clock Source)/fTq) - 1
110: * fTq = (Bit Rate) * (Total Time Quanta)
111: * Total Time Quanta = (SYNCH_SEG+(TSEG1+1)+(TSEG2+1))
112: * Total Time Quanta = 1 + 11 + 4 = 16 Time Quanta
113: * fTq = 125Khz * 16 Time Quanta = 2Mhz
114: * CAN_BRP = (16Mhz/2Mhz) - 1 = 8 - 1 = 7
115: * TSEG1 = 10
116: * TSEG2 = 3
117: * SJW = (Synchronization Jump Width-1) = 3
118: *
119: * Another line of the description.
120: *
121: * Parameters: None
122: *
123: * Return : None
124: */
125:
126: void CANInit(void) {
Function: CANInit
Source : D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\Sources\main.c
Options : -Env"GENPATH=D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256;D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\bin;D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\prm;D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\cmd;D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\Sources;D:\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\lib;D:\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\src;D:\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\include" -Env"LIBPATH=D:\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\include" -Env"OBJPATH=D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\bin" -Env"TEXTPATH=D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\bin" -Lasm=%n.lst -Mb -ObjN="D:\RTAC\Willy Note\HCS12 MSCAN\MSCAN12_DP256\MSCAN12_DP256\MSCAN12_DP256_Data\P&E_ICD\ObjectCode\main.c.o" -WmsgSd1106
127:
128: CAN0CTL0 = 0x01; /* Enter Initialization Mode
0000 c601 LDAB #1
0002 7b0000 STAB _CAN0CTL0
129: *
130: * 0b00000001
131: * ||||||||__ Enter Initialization Mode
132: * |||||||___ Sleep Mode Request bit
133: * ||||||____ Wake-Up disabled
134: * |||||_____ Time stamping disabled
135: * ||||______ Synchronized Status
136: * |||_______ CAN not affected by Wait
137: * ||________ Receiver Active Status bit
138: * |_________ Received Frame Flag bit
139: */
140:
141: while (!(CAN0CTL1&0x01)){}; /* Wait for Initialization Mode acknowledge
0005 1f000001fb BRCLR _CAN0CTL1,#1,*+0 ;abs = 0005
142: * INITRQ bit = 1
143: */
144:
145: CAN0CTL1 = 0xA0; /* Enable MSCAN module and LoopBack Mode
000a c6a0 LDAB #160
000c 7b0000 STAB _CAN0CTL1
146: *
147: * 0b10100000
148: * ||||||||__ Initialization Mode Acknowledge
149: * |||||||___ Sleep Mode Acknowledge
150: * ||||||____ Wake-up low-pass filter disabled
151: * |||||_____ Unimplemented
152: * ||||______ Listen Only Mode disabled
153: * |||_______ Loop Back Mode enabled
154: * ||________ Ext Osc/Xtal as Clock Source
155: * |_________ MSCAN Module enabled
156: */
157:
158: CAN0BTR0 = 0xC7; /* Synch Jump = 3 Tq clock Cycles
000f 86c7 LDAA #199
0011 7a0000 STAA _CAN0BTR0
159: *
160: * 0b11000111
161: * ||||||||__
162: * |||||||___\
163: * ||||||____ |
164: * |||||_____ |_ CAN Clock Prescaler = 7
165: * ||||______ |
166: * |||_______ |
167: * ||________/
168: * |_________>- SJW = 3
169: */
170:
171: CAN0BTR1 = 0x3A; /* Set Number of samples per bit, TSEG1 and TSEG2
0014 c63a LDAB #58
0016 7b0000 STAB _CAN0BTR1
172: *
173: * 0b00111010
174: * ||||||||__
175: * |||||||___|
176: * ||||||____|- TSEG1 = 10
177: * |||||_____|
178: * ||||______
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -