📄 18f_ad.lst
字号:
000178 e2f8 BC 0x16a bc -8 // copy_loop C:\MCC18\src\traditional\startup\c018i.c
00017a 0772 DECF 0x72,0x1,0x1 decf curr_byte + 1, 1, 1 C:\MCC18\src\traditional\startup\c018i.c
00017c d7f9 BRA 0x170 bra -7 // copy_one_byte C:\MCC18\src\traditional\startup\c018i.c
C:\MCC18\src\traditional\startup\c018i.c
done_copying: C:\MCC18\src\traditional\startup\c018i.c
C:\MCC18\src\traditional\startup\c018i.c
_endasm C:\MCC18\src\traditional\startup\c018i.c
/* restore the table pointer for the next entry */ C:\MCC18\src\traditional\startup\c018i.c
00017e c075 MOVFF 0x75,0xff6 TBLPTR = data_ptr; C:\MCC18\src\traditional\startup\c018i.c
000180 fff6
000182 c076 MOVFF 0x76,0xff7
000184 fff7
000186 c077 MOVFF 0x77,0xff8
000188 fff8
/* next entry... */ C:\MCC18\src\traditional\startup\c018i.c
00018a 0100 MOVLB 0x0 curr_entry--; C:\MCC18\src\traditional\startup\c018i.c
00018c 0773 DECF 0x73,0x1,0x1
00018e 0e00 MOVLW 0x0
000190 5b74 SUBWFB 0x74,0x1,0x1
000192 d7bf BRA 0x112 goto test; C:\MCC18\src\traditional\startup\c018i.c
done: C:\MCC18\src\traditional\startup\c018i.c
; C:\MCC18\src\traditional\startup\c018i.c
000194 0012 RETURN 0x0 } C:\MCC18\src\traditional\startup\c018i.c
//************************************************ D:\work\pic\18f_ad\18f_ad.c
//用18f6585写的5通道ad程序,2006-9-22调试通过 D:\work\pic\18f_ad\18f_ad.c
//************************************************ D:\work\pic\18f_ad\18f_ad.c
#include<p18f6585.h> D:\work\pic\18f_ad\18f_ad.c
#include<math.h> D:\work\pic\18f_ad\18f_ad.c
void Int_tmr0(void); D:\work\pic\18f_ad\18f_ad.c
void ad_init(void); D:\work\pic\18f_ad\18f_ad.c
void initial(void); D:\work\pic\18f_ad\18f_ad.c
D:\work\pic\18f_ad\18f_ad.c
int count,res[5]; D:\work\pic\18f_ad\18f_ad.c
union adres D:\work\pic\18f_ad\18f_ad.c
{ D:\work\pic\18f_ad\18f_ad.c
int y1; D:\work\pic\18f_ad\18f_ad.c
unsigned char adre[2]; D:\work\pic\18f_ad\18f_ad.c
}adresult;//使用联合来存放ad转换的结果 D:\work\pic\18f_ad\18f_ad.c
D:\work\pic\18f_ad\18f_ad.c
//ad初始化 D:\work\pic\18f_ad\18f_ad.c
void ad_init(void) D:\work\pic\18f_ad\18f_ad.c
{ D:\work\pic\18f_ad\18f_ad.c
00002c 80c2 BSF 0xc2,0x0,0x0 ADCON0bits.ADON=1;//ad转换器工作 D:\work\pic\18f_ad\18f_ad.c
00002e 0e82 MOVLW 0x82 ADCON1=0x82;//选择5个口均为模拟输入 D:\work\pic\18f_ad\18f_ad.c
000030 6ec1 MOVWF 0xc1,0x0
000032 9c9e BCF 0x9e,0x6,0x0 PIR1bits.ADIF=0; D:\work\pic\18f_ad\18f_ad.c
000034 0e2f MOVLW 0x2f TRISA=0x2f;//RA4为输出,其他均为输入 D:\work\pic\18f_ad\18f_ad.c
000036 6e92 MOVWF 0x92,0x0
000038 0012 RETURN 0x0 } D:\work\pic\18f_ad\18f_ad.c
//主程序初始化 D:\work\pic\18f_ad\18f_ad.c
void initial(void) D:\work\pic\18f_ad\18f_ad.c
{ D:\work\pic\18f_ad\18f_ad.c
00003a 0ea0 MOVLW 0xa0 INTCON=0xa0;//开放总中断和T0中断 D:\work\pic\18f_ad\18f_ad.c
00003c 6ef2 MOVWF 0xf2,0x0
00003e 84f1 BSF 0xf1,0x2,0x0 INTCON2bits.TMR0IP=1;//tmr0高优先中断 D:\work\pic\18f_ad\18f_ad.c
000040 0e01 MOVLW 0x1 TMR0L=0x01; D:\work\pic\18f_ad\18f_ad.c
000042 6ed6 MOVWF 0xd6,0x0
000044 6ad7 CLRF 0xd7,0x0 TMR0H=0x00;//装初值 D:\work\pic\18f_ad\18f_ad.c
000046 0e87 MOVLW 0x87 T0CON=0x87;//使能tmr0,16位,预分频位256 D:\work\pic\18f_ad\18f_ad.c
000048 6ed5 MOVWF 0xd5,0x0
00004a 6a93 CLRF 0x93,0x0 TRISB=0;//设置输出为0 D:\work\pic\18f_ad\18f_ad.c
00004c 6a81 CLRF 0x81,0x0 PORTB=0x00; D:\work\pic\18f_ad\18f_ad.c
00004e 0100 MOVLB 0x0 count=0; D:\work\pic\18f_ad\18f_ad.c
000050 6b60 CLRF 0x60,0x1
000052 6b61 CLRF 0x61,0x1
000054 0012 RETURN 0x0 } D:\work\pic\18f_ad\18f_ad.c
D:\work\pic\18f_ad\18f_ad.c
D:\work\pic\18f_ad\18f_ad.c
void main(void) D:\work\pic\18f_ad\18f_ad.c
{ D:\work\pic\18f_ad\18f_ad.c
000056 dfea RCALL 0x2c ad_init(); D:\work\pic\18f_ad\18f_ad.c
000058 dff0 RCALL 0x3a initial(); D:\work\pic\18f_ad\18f_ad.c
00005a 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; D:\work\pic\18f_ad\18f_ad.c
00005c 82c2 BSF 0xc2,0x1,0x0 ADCON0bits.GO=1; D:\work\pic\18f_ad\18f_ad.c
00005e d7ff BRA 0x5e while(1) D:\work\pic\18f_ad\18f_ad.c
{ D:\work\pic\18f_ad\18f_ad.c
; D:\work\pic\18f_ad\18f_ad.c
} D:\work\pic\18f_ad\18f_ad.c
000060 0012 RETURN 0x0 } D:\work\pic\18f_ad\18f_ad.c
#pragma code InterruptVectorHigh=0x08//从中断向量地址跳转的服务程序 D:\work\pic\18f_ad\18f_ad.c
void InterruptVectorHigh(void) D:\work\pic\18f_ad\18f_ad.c
{ D:\work\pic\18f_ad\18f_ad.c
_asm D:\work\pic\18f_ad\18f_ad.c
000008 ef31 GOTO 0x62 goto Int_tmr0//跳转要执行的子程序 D:\work\pic\18f_ad\18f_ad.c
00000a f000
_endasm D:\work\pic\18f_ad\18f_ad.c
00000c 0012 RETURN 0x0 } D:\work\pic\18f_ad\18f_ad.c
//定时中断来读取5通道的ad转换值 D:\work\pic\18f_ad\18f_ad.c
#pragma code D:\work\pic\18f_ad\18f_ad.c
#pragma interrupt Int_tmr0 D:\work\pic\18f_ad\18f_ad.c
000062 cfda MOVFF 0xfda,0xfe4 void Int_tmr0() D:\work\pic\18f_ad\18f_ad.c
000064 ffe4
000066 cfe2 MOVFF 0xfe2,0xfda
000068 ffda
00006a cfe9 MOVFF 0xfe9,0xfe4
00006c ffe4
00006e cfea MOVFF 0xfea,0xfe4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -