📄 hardwareinit.lst
字号:
364 =1
365 =1 //can.c
366 =1 void can_init(uint pointa); //can初始化
367 =1 void can_reset(void);
C51 COMPILER V6.12 HARDWAREINIT 06/05/2005 15:44:45 PAGE 14
368 =1 void can_call_in(uchar a); //外呼
369 =1 can_receive_more(uchar a); //控制器
370 =1 can_receive_only(uchar a); //控制器
371 =1 clear_unknow_code(uchar a); //清乱码
372 =1 void can_call_assign(); //外呼分派
373 =1 can_call_lamp(); //暂定50ms循环点灯,灭灯
374 =1
375 =1
2 //#include<w77c32.h>
3 //#include<intrins.h>
4
5
6 void maininit()
7 {
8 1 uchar xdata *data s;
9 1
10 1 uchar xdata *data p;
11 1 uint data i;
12 1 // uchar a;
13 1 // uint xdata *data q=0xc077; 用户参数存储过标志
14 1 PMR=PMR|1; //cpu ram 有效
15 1
16 1 p=0x1800;
17 1 *(p+0xe0)=0; *(p+0xe2)=0xc; //页=0 VM=12H
18 1 *(p+6)=0xff; *(p+7)=0xff; //PSD A,B口为输出
19 1 *(p+4)=0; //A口输出=0
20 1
21 1 //can复位
22 1 *(p+5)=0xff;
23 1 _nop_();
24 1 _nop_();
25 1 _nop_();
26 1 _nop_();
27 1 *(p+5)=0xf;
28 1 _nop_();
29 1 _nop_();
30 1 _nop_();
31 1 _nop_();
32 1 *(p+5)=0xff;
33 1
34 1 s=0; //1k ram 初始化
35 1 for(i=0;i<0x400;i++)
36 1 *(s+i)=0;
37 1
38 1 canx_cs[0]=0xe000;
39 1 canx_cs[1]=0xe100;
40 1 canx_cs[2]=0xe200;
41 1 canx_cs[3]=0xe300;
42 1 can_init(canx_cs[0]);
43 1 can_init(canx_cs[1]); //can2初始化
44 1 can_init(canx_cs[2]); //can3初始化
45 1 can_init(canx_cs[3]);
46 1
47 1 //2004.07.26 LHM(改为定时器0定时,定时器1波特率发生器)
48 1 /*
49 1 TMOD=0x21; //T1为波特率发生器,T0为16位定时器
50 1
51 1 TH0=-(0x28B0/256);
52 1 TL0=-(0x28B0/256);
53 1 TR0=1; //启动T0
54 1 ET0=1; //开T0中断
55 1
C51 COMPILER V6.12 HARDWAREINIT 06/05/2005 15:44:45 PAGE 15
56 1 TL1=0xe5; TH1=0xe5; //25M晶振 TL1=0xf9; TH1=0xf9; 波特率2400
57 1 PCON=0;
58 1 TR1=1; //启动T1
59 1 SCON=0x50; //串行1为方式1
60 1 ET1=0;
61 1 */
62 1
63 1 TMOD=0x25; //定时器1工作在方式2,波特率产生器
64 1 // TL1=0xf9; TH1=0xf9; //25M晶振 波特率9600
65 1 // TL1=0xef; TH1=0xef; //16M晶振 波特率2400
66 1 TL1=0xe5; TH1=0xe5; //25M晶振 波特率2400
67 1 PCON=0;
68 1 TR1=1;
69 1 SCON=0x50; //串行1为方式1
70 1
71 1 //16M晶振
72 1 // RCAP2H=-(0x1A0A/256); //T2工作在定时器方式,定时为5MS
73 1 // RCAP2L=-(0x1A0A%256);
74 1 // RCAP2H=-(0x6828/256); //T2工作在定时器方式,定时为20MS
75 1 // RCAP2L=-(0x6828%256);
76 1 //25M晶振
77 1 RCAP2H=-(0x28AF/256); //T2工作在定时器方式,定时为5MS
78 1 RCAP2L=-(0x28AF%256);
79 1
80 1 ET2=1; T2CON=0x04;
81 1
82 1
83 1 P3_5=~P3_5; //看门狗
84 1
85 1 //时钟用
86 1
87 1 //rs232初始化
88 1 sbuf_rec=INVALID_ASC2; // SBUF的缓冲区初始值为0xFF
89 1 m_ST_60s_count=0; // 60s计数器
90 1 m_comm_enable_flg=0; // 通讯使能
91 1 m_comm_60sover_flg=0; // 60s计时结束标志
92 1 m_msg_monitor_flg=0; // 监视命令标记
93 1 m_msg_quit_flg=0; // 解除监视命令标志
94 1 m_msg_set_flg=0; // 参数设定命令标记
95 1 // m_monitor_delay_flg=0; // 监视延迟标记
96 1 m_monitor_delay_count=0;
97 1 m_scc.WriteFlg=0;
98 1 m_active_idx=0;
99 1 m_add_type_idx=0;
100 1 m_get_senddata_flg=1;
101 1 m_resolve_flg=0;
102 1
103 1 //clock用
104 1 m_read_time=1;
105 1 m_read_time_count=COUNT_5s;
106 1
107 1 //can通讯用
108 1 //-------04-5-17
109 1 m_state_20ms=0;
110 1 for(i=0;i<ENum_MAX;i++)
111 1 e_display_reflash_floor[i]=1;
112 1 //can复位用
113 1 m_can0_flg=0;
114 1 m_can1_flg=0;
115 1 m_can2_flg=0;
116 1 m_can3_flg=0;
117 1 m_can0_count=COUNT_ERR;
C51 COMPILER V6.12 HARDWAREINIT 06/05/2005 15:44:45 PAGE 16
118 1 m_can1_count=COUNT_ERR;
119 1 m_can2_count=COUNT_ERR;
120 1 m_can3_count=COUNT_ERR;
121 1 m_can0err_flg=0;
122 1 m_can1err_flg=0;
123 1 m_can2err_flg=0;
124 1 m_can3err_flg=0;
125 1
126 1 //用户参数存储
127 1 m_once_param_over_flg=0;
128 1 //2004.06.11 上电后设置为用户参数
129 1 m_save_over_flg=0;
130 1 m_restore_flg=1;
131 1 m_save_flg=0;
132 1 m_factory_flg=0;
133 1
134 1
135 1 EA=1; // 总中断允许
136 1 }
137
138
C51 COMPILER V6.12 HARDWAREINIT 06/05/2005 15:44:45 PAGE 17
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION maininit (BEGIN)
; SOURCE LINE # 6
; SOURCE LINE # 7
; SOURCE LINE # 14
0000 43C401 ORL PMR,#01H
; SOURCE LINE # 16
0003 750018 R MOV p,#018H
0006 750000 R MOV p+01H,#00H
; SOURCE LINE # 17
0009 E500 R MOV A,p+01H
000B 24E0 ADD A,#0E0H
000D F582 MOV DPL,A
000F E4 CLR A
0010 3500 R ADDC A,p
0012 F583 MOV DPH,A
0014 E4 CLR A
0015 F0 MOVX @DPTR,A
0016 E500 R MOV A,p+01H
0018 24E2 ADD A,#0E2H
001A F582 MOV DPL,A
001C E4 CLR A
001D 3500 R ADDC A,p
001F F583 MOV DPH,A
0021 740C MOV A,#0CH
0023 F0 MOVX @DPTR,A
; SOURCE LINE # 18
0024 E500 R MOV A,p+01H
0026 2406 ADD A,#06H
0028 F582 MOV DPL,A
002A E4 CLR A
002B 3500 R ADDC A,p
002D F583 MOV DPH,A
002F 74FF MOV A,#0FFH
0031 F0 MOVX @DPTR,A
0032 E500 R MOV A,p+01H
0034 2407 ADD A,#07H
0036 F582 MOV DPL,A
0038 E4 CLR A
0039 3500 R ADDC A,p
003B F583 MOV DPH,A
003D 74FF MOV A,#0FFH
003F F0 MOVX @DPTR,A
; SOURCE LINE # 19
0040 E500 R MOV A,p+01H
0042 2404 ADD A,#04H
0044 F582 MOV DPL,A
0046 E4 CLR A
0047 3500 R ADDC A,p
0049 F583 MOV DPH,A
004B E4 CLR A
004C F0 MOVX @DPTR,A
; SOURCE LINE # 22
004D E500 R MOV A,p+01H
004F 2405 ADD A,#05H
0051 F582 MOV DPL,A
0053 E4 CLR A
0054 3500 R ADDC A,p
0056 F583 MOV DPH,A
0058 74FF MOV A,#0FFH
C51 COMPILER V6.12 HARDWAREINIT 06/05/2005 15:44:45 PAGE 18
005A F0 MOVX @DPTR,A
; SOURCE LINE # 23
005B 00 NOP
; SOURCE LINE # 24
005C 00 NOP
; SOURCE LINE # 25
005D 00 NOP
; SOURCE LINE # 26
005E 00 NOP
; SOURCE LINE # 27
005F 740F MOV A,#0FH
0061 F0 MOVX @DPTR,A
; SOURCE LINE # 28
0062 00 NOP
; SOURCE LINE # 29
0063 00 NOP
; SOURCE LINE # 30
0064 00 NOP
; SOURCE LINE # 31
0065 00 NOP
; SOURCE LINE # 32
0066 74FF MOV A,#0FFH
0068 F0 MOVX @DPTR,A
; SOURCE LINE # 34
0069 E4 CLR A
006A F500 R MOV s,A
006C F500 R MOV s+01H,A
; SOURCE LINE # 35
006E F500 R MOV i,A
0070 F500 R MOV i+01H,A
0072 ?C0001:
; SOURCE LINE # 36
0072 E500 R MOV A,s+01H
0074 2500 R ADD A,i+01H
0076 F582 MOV DPL,A
0078 E500 R MOV A,s
007A 3500 R ADDC A,i
007C F583 MOV DPH,A
007E E4 CLR A
007F F0 MOVX @DPTR,A
0080 0500 R INC i+01H
0082 E500 R MOV A,i+01H
0084 7002 JNZ ?C0008
0086 0500 R INC i
0088 ?C0008:
0088 B400E7 CJNE A,#00H,?C0001
008B E500 R MOV A,i
008D B404E2 CJNE A,#04H,?C0001
0090 ?C0002:
; SOURCE LINE # 38
0090 900000 E MOV DPTR,#canx_cs
0093 74E0 MOV A,#0E0H
0095 F0 MOVX @DPTR,A
0096 A3 INC DPTR
0097 E4 CLR A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -