?? hzmmi.lis
字號:
.module hzmmi.c
.area text(rom, con, rel)
0000 .dbfile D:\美來尼爾\美蘭尼爾改進\測控單元\面板程序\測控面板調試程序\hzmmi.c
0000 .dbfunc s main _main fI
; pt -> <dead>
; j -> <dead>
; i -> <dead>
.even
0000 _main::
0000 .dbline -1
0000 .dbline 38
; #include "hzmmi.h"
;
; #define __main__
;
; #define T_RELOAD (10000-1) //1.000ms @10MHz,毫秒定時器用
;
; void init1(void); //初始化子程序
; void run_1s(void); //1秒任務
; void dlyms(word ms); //毫秒級延時函數
; void delly(word ns); //毫秒級延時函數
; void str_hz(byte row,byte col,byte *str); //顯示漢字串及大ASCII串
; void wait_disp(void); //液晶忙等待
; void write_order(byte order); //對液晶發送命令碼
; void write_data(byte data); //向LCD送數據碼(ASCII碼)
; void init_disp_nocls(void); //對液晶初始化,不清屏
; void cls(void); //清屏
; void init_disp(void); //對液晶初始化,清屏
; void str_sasc(byte row,byte col,byte *str); //顯示小ASCII串
; void disp_face(void); //顯示首頁
; void full(void);
; void write_data(byte data);
; void write_data_auto(byte data);
;
; void wait_disp_auto(void);
;
; word sec_num; //1秒任務計時器
; word mstimer1; //毫秒延時計數
; word mstimer3; //串口發送延時
; byte ctl_data;
; LIB_ADDR lib_addr;
;
;
; byte disp_buffer[128]; //顯示緩沖區
; byte flag;
;
; //主程序調用了上電復位進程,鍵盤進程,事件進程;
; void main(void)
; {
0000 .dbline 42
; word i,j;
; byte *pt;
;
; flag=1;
0000 81E0 ldi R24,1
0002 80930000 sts _flag,R24
0006 .dbline 43
; init1();
0006 2CD0 xcall _init1
0008 .dbline 44
; init_disp();
0008 40D1 xcall _init_disp
000A .dbline 45
; disp_face();
000A 72D0 xcall _disp_face
000C .dbline 47
000C L6:
000C .dbline 47
; // dlyms(4000);
; for(;;){
000C .dbline 48
; if(sec_num>1000) {
000C 88EE ldi R24,1000
000E 93E0 ldi R25,3
0010 30900200 lds R3,_sec_num+1
0014 20900100 lds R2,_sec_num
0018 8215 cp R24,R2
001A 9305 cpc R25,R3
001C 70F4 brsh L10
001E .dbline 48
001E .dbline 50
;
; if(flag){
001E 20900000 lds R2,_flag
0022 2220 tst R2
0024 29F0 breq L12
0026 .dbline 50
0026 .dbline 51
; flag=0;
0026 2224 clr R2
0028 20920000 sts _flag,R2
002C .dbline 52
; disp_face();
002C 61D0 xcall _disp_face
002E .dbline 53
; }
002E 04C0 xjmp L13
0030 L12:
0030 .dbline 54
; else{
0030 .dbline 55
; flag=1;
0030 81E0 ldi R24,1
0032 80930000 sts _flag,R24
0036 .dbline 56
; cls();
0036 F2D0 xcall _cls
0038 .dbline 57
; }
0038 L13:
0038 .dbline 59
;
; run_1s();
0038 03D0 xcall _run_1s
003A .dbline 60
; }
003A L10:
003A .dbline 61
003A A895 wdr
003C .dbline 62
003C .dbline 47
003C .dbline 47
003C E7CF xjmp L6
003E X0:
003E .dbline -2
003E L5:
003E .dbline 0 ; func end
003E 0895 ret
0040 .dbsym l pt 1 pc
0040 .dbsym l j 1 s
0040 .dbsym l i 1 s
0040 .dbfunc s run_1s _run_1s fI
.even
0040 _run_1s::
0040 .dbline -1
0040 .dbline 66
; asm("wdr"); //軟看門狗復位
; }
; }
; //1秒任務
; void run_1s(void)
; {
0040 .dbline 67
; sec_num=0;
0040 2224 clr R2
0042 3324 clr R3
0044 30920200 sts _sec_num+1,R3
0048 20920100 sts _sec_num,R2
004C .dbline 68
; PORTE^=RUN_LAMP;
004C 84E0 ldi R24,4
004E 23B0 in R2,0x3
0050 2826 eor R2,R24
0052 23B8 out 0x3,R2
0054 .dbline 69
; PORTG|=EL_ON;
0054 80916500 lds R24,101
0058 8061 ori R24,16
005A 80936500 sts 101,R24
005E .dbline -2
005E .dbline 70
; }
005E L14:
005E .dbline 0 ; func end
005E 0895 ret
0060 .dbfunc s init1 _init1 fI
.even
0060 _init1::
0060 .dbline -1
0060 .dbline 73
; //初始化
; void init1(void)
; {
0060 .dbline 75
; //定時器初始化
; MCUCR=0x80;//enable the External Memory
0060 80E8 ldi R24,128
0062 85BF out 0x35,R24
0064 .dbline 76
; XMCRA=0x0e;
0064 8EE0 ldi R24,14
0066 80936D00 sts 109,R24
006A .dbline 77
; XMCRB=0x80;
006A 80E8 ldi R24,128
006C 80936C00 sts 108,R24
0070 .dbline 79
;
; TCCR1A=0;
0070 2224 clr R2
0072 2FBC out 0x2f,R2
0074 .dbline 80
; TCCR1B=0x09; // ctc1=1,ck/1
0074 89E0 ldi R24,9
0076 8EBD out 0x2e,R24
0078 .dbline 81
; TIMSK=0x10; // TIME1B COMPEAR INT OK
0078 80E1 ldi R24,16
007A 87BF out 0x37,R24
007C .dbline 82
; OCR1AH=(byte)(T_RELOAD/256);
007C 87E2 ldi R24,39
007E 8BBD out 0x2b,R24
0080 .dbline 83
; OCR1AL=(byte)T_RELOAD;
0080 8FE0 ldi R24,15
0082 8ABD out 0x2a,R24
0084 .dbline 85
; //液晶口初始化
; DDRB=0x00; //鍵盤輸入
0084 27BA out 0x17,R2
0086 .dbline 86
; DDRD=0xff; //LCD控制
0086 8FEF ldi R24,255
0088 81BB out 0x11,R24
008A .dbline 87
; DDRE=0x0f;
008A 8FE0 ldi R24,15
008C 82B9 out 0x2,R24
008E .dbline 88
; DDRF=0x0f; //LIB為輸出
008E 80936100 sts 97,R24
0092 .dbline 89
; DDRG=0x18;
0092 88E1 ldi R24,24
0094 80936400 sts 100,R24
0098 .dbline 91
;
; asm("sei");
0098 7894 sei
009A .dbline -2
009A .dbline 92
; }
009A L15:
009A .dbline 0 ; func end
009A 0895 ret
.area vector(rom, abs)
.org 48
0030 0C944E00 jmp _int_timer0
.area text(rom, con, rel)
009C .dbfile D:\美來尼爾\美蘭尼爾改進\測控單元\面板程序\測控面板調試程序\hzmmi.c
009C .dbfunc s int_timer0 _int_timer0 fI
.even
009C _int_timer0::
009C 2A92 st -y,R2
009E 3A92 st -y,R3
00A0 8A93 st -y,R24
00A2 9A93 st -y,R25
00A4 2FB6 in R2,0x3f
00A6 2A92 st -y,R2
00A8 .dbline -1
00A8 .dbline 96
;
; #pragma interrupt_handler int_timer0:13 //定義中斷向量
; void int_timer0(void) //定時器延時器中斷,1ms中斷一次
; {
00A8 .dbline 97
; asm("cli"); //關中斷
00A8 F894 cli
00AA .dbline 98
; OCR1AH=(byte)(T_RELOAD/256);
00AA 87E2 ldi R24,39
00AC 8BBD out 0x2b,R24
00AE .dbline 99
; OCR1AL=(byte)T_RELOAD;
00AE 8FE0 ldi R24,15
00B0 8ABD out 0x2a,R24
00B2 .dbline 100
; sec_num++; //秒計時+1
00B2 90910200 lds R25,_sec_num+1
00B6 80910100 lds R24,_sec_num
00BA 0196 adiw R24,1
00BC 90930200 sts _sec_num+1,R25
00C0 80930100 sts _sec_num,R24
00C4 .dbline 101
; if(mstimer1>0) mstimer1--;
00C4 30908B00 lds R3,_mstimer1+1
00C8 20908A00 lds R2,_mstimer1
00CC 2220 tst R2
00CE 11F4 brne X1
00D0 3320 tst R3
00D2 31F0 breq L17
00D4 X1:
00D4 .dbline 101
00D4 C101 movw R24,R2
00D6 0197 sbiw R24,1
00D8 90938B00 sts _mstimer1+1,R25
00DC 80938A00 sts _mstimer1,R24
00E0 L17:
00E0 .dbline 103
; // if(mstimer2>0) mstimer2--;
; asm("sei"); //中斷允許
00E0 7894 sei
00E2 .dbline -2
00E2 .dbline 104
; }
00E2 L16:
00E2 2990 ld R2,y+
00E4 2FBE out 0x3f,R2
00E6 9991 ld R25,y+
00E8 8991 ld R24,y+
00EA 3990 ld R3,y+
00EC 2990 ld R2,y+
00EE .dbline 0 ; func end
00EE 1895 reti
00F0 .dbfunc s disp_face _disp_face fI
; i -> <dead>
.even
00F0 _disp_face::
00F0 2297 sbiw R28,2
00F2 .dbline -1
00F2 .dbline 107
;
; void disp_face(void)
; {
00F2 .dbline 109
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -