adc0804的程式問題 |
尚未結案
|
saine3746
一般會員 發表:1 回覆:0 積分:0 註冊:2005-07-24 發送簡訊給我 |
void init_sc12(unsigned mask) { //enable bus mask inregs.x.ax=0x8001; inregs.x.dx=mask; int86x(PFE_INT,&inregs,&outregs,&segregs); //=========PCS6=>CS======================================== //enable programmable chip selects inregs.h.ah=0x83; inregs.x.dx=0x40; //pcs6 address 600h~6ffh int86x(PFE_INT,&inregs,&outregs,&segregs); } //*****Write data into ADC0804*****通知外部晶片開始動作 void write_sc12_io(void)//unsigned char value { //write data bus,A0.0-A0.6 on databus //write data bus inregs.h.ah=0x81; inregs.x.di=0x6FF; //address inregs.h.dh=0; //inregs.h.dl=value; //送給ADC0804ㄉ值0X00 //inregs.x.bx=0xFFFF; //wAND=only AD0-AD7 //inregs.x.cx=0x0000; //wXOR=0x0000 int86x(HAL_INT,&inregs,&outregs,&segregs); } //******read ADC0804 inputs******** unsigned char read_sc12_io(void) { unsigned char value; inregs.h.ah=0x80; inregs.x.di=0x6F0; inregs.x.bx=0xFFFF; inregs.x.cx=0x0000; int86x(HAL_INT,&inregs,&outregs,&segregs); value=outregs.h.al; return value; } //AD轉換///////////////////////////////////////////////////// unsigned char ADC(void) { unsigned char read_state;//存放讀取資料 //wait 100ns 等待轉換時間 inregs.x.ax=0x0900; inregs.x.bx=100; int86x(TCP_INT,&inregs,&outregs,&segregs); if(counter==1)//=1表示轉換完成 { asm cli read_state=read_sc12_io(); counter=0; asm sti } write_sc12_io();//令wr為0送出一ㄍlow已令adc開始轉換 return read_state; } ======================================================== 重點來了..... inregs.x.ax=0x8001; inregs.x.dx=mask; inregs.h.ah=0x80; inregs.x.di=0x6F0; inregs.x.bx=0xFFFF; inregs.x.cx=0x0000; inregs.x.ax=0x0900; inregs.x.bx=100; 那些.x.ax~~.x.dx~~.h.ah等等..那些是什麼意思? 和後面那些數值似懂非懂 拜託各位大大給我解答.......發表人 - saine3746 於 2005/07/25 00:40:00 |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
windblown
中階會員 發表:0 回覆:117 積分:98 註冊:2003-11-14 發送簡訊給我 |
inregs 代表暫存器 (register)的一個變數
x 代表 x86 的 16 bit 暫存器 ex: ax, bx, cx, dx, si, di ...
h 代表 x86 的 8 bit 暫存器, ax~dx(結尾為 x) 的每個 16 bit 暫存器 可以分成 h, l ex: ax = ah al; h 表示 high, l 表示 low
所以
inregs.x.ax = 0x8001; 表示把暫存器的 ax 設為 0x8001 (此時 ah = 0x80, al=0x01)
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |