亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lm74saa1064.asm

?? c8051f020源代碼39個 使用Silicon Labs IDE 調(diào)試器
?? ASM
字號:
;LM74SAA1064.ASM程序清單如下:2005.11.3
$include (C8051F020.inc)       ; SFR聲明
    SAA1064ADR      EQU   070H        ; SAA1064芯片的寫地址
   ; SMBus狀態(tài)及其對應(yīng)的偏移地址:
    SMB_BUS_ERROR   EQU   00H        ;(所有方式)總線錯誤
    SMB_START       EQU   08H       ; (MT&MR)已發(fā)送起始位
    SMB_RP_START    EQU   10H       ; (MT&MR)重復(fù)起始位
    SMB_MTADDACK    EQU   18H       ; (MT)已發(fā)送從地址+W;收到 ACK
    SMB_MTADDNACK   EQU   20H       ; (MT)已發(fā)送從地址+W;收到 NACK
    SMB_MTDBACK     EQU   28H       ; (MT)已發(fā)送數(shù)據(jù)字節(jié);收到ACK
    SMB_MTDBNACK    EQU   30H       ; (MT)已發(fā)送數(shù)據(jù)字節(jié);收到NACK
    SMB_MTARBLOST   EQU   38H       ; (MT)競爭失敗
    SMB_MRADDACK    EQU   40H       ; (MR)已發(fā)送從地址+R;收到 ACK
    SMB_MRADDNACK   EQU   48H       ; (MR)已發(fā)送從地址+R;收到NACK
    SMB_MRDBACK     EQU   50H       ; (MR)收到數(shù)據(jù)字節(jié);已發(fā)送ACK 
    SMB_MRDBNACK    EQU   58H        ;(MR)收到數(shù)據(jù)字節(jié);已發(fā)送NACK 
DSEG					            	;	數(shù)據(jù)段;
ORG       30H;
    SLA:           DS    1          ;保存從地址
    SLAW:          DS    1         ; 保存從地址+ WRITE
    SUBADR:        DS    1          ;要訪問的器件SAA1064的子地址
   ; 用于暫存數(shù)據(jù)的單元
    COUNT:         DS    1          ;存放數(shù)據(jù)數(shù)目的單元
    DATA1:         DS    1         ; 存放數(shù)據(jù)的單元
    SUBADDR:       DS    1         ; 存放SAA1064的子地址SUBADR 
BSEG
ORG      20H
    RW:            DBIT  1           ;R/W命令位。l=READ,0=WRITE
    SM_BUSY:       DBIT  1          ;SMBus忙標志(軟件保存)
    BYTE_SENT :    DBIT  1  
 CSEG                                 ;代碼段
    ORG      00H         ;復(fù)位
   LJMP     MAIN
	ORG     033H        ;SPI中斷向量
   LJMP    SPI_ISR
    ORG     03BH        ;SMBus中斷向量
    LJMP    SMBus_ISR
	 ORG   100H
;主程序
MAIN:   MOV    SP,#7
	    MOV    WDTCN,#0DEH       ;禁止看門狗定時器
        MOV    WDTCN,#0ADH;
		LCALL  SPI_SMBUS_Init     ;初始化I/O端口
ABC:	LCALL   LM74             ;LM74采集溫度值(16位數(shù)),存入40H,41H中
        CLR    SM_BUSY           ; 為第一次傳輸清除SM_Busy標志
        SETB       EA      
        MOV     SUBADDR,#00H ; 裝入SAA1064的子地址(SUBADR=00H)
        MOV     COUNT,#6H    ; 裝入待寫數(shù)據(jù)塊的長度
        MOV     SLA,#SAA1064ADR   ; 裝入從器件的寫地址(70H)
		MOV     R0,#7AH           ; R0做計數(shù)器用.從RAM 7AH單元開始
		MOV     A,#02               
		MOV      EIE1,A          ; 允許SMBus中斷,不允許SPI中斷
        LCALL   SEND ; SAA1064的發(fā)送子程序SEND 
		LCALL   DELY
		SJMP     MAIN; 運行一遍,再循環(huán)運行.
TAB:    DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,39H,17H
;COM=#17H是SAA1064的控制命令 ;共陰極7段LED數(shù)碼管的顯示字形編碼表;(0,1,2,3,4,5,6,7,8,9,C,COM)
;SAA1064的發(fā)送子程序SEND;
;SEND子程序向SAA1064寫入六位數(shù)據(jù)(17H+三位溫度值+字符"C").
; 依次連續(xù)寫入6個數(shù)到SAA1064中去:17H+四位數(shù)字+"C"
;該子程序管理SM_BUSY位,設(shè)置 RW=WRITE,裝載 SLAW,啟動寫操作。
SEND:           ;SEND子程序用中斷方式向SAA1064寫入六位數(shù)據(jù)(0,17H,及四位溫度值)
     PUSH     ACC                  ;保存累加器
     JB       SM_BUSY,$            ;等待SMBus空閑
     CLR      RW                    ; RW= 0(寫)
     MOV      A,SLA                 ; 取SLA_ADD到A 
     MOV      SLAW,A                ;將SLA_ADD+ WRITE保存到SLAW
	SETB     SM_BUSY                ; 占用SMBus
     SETB     STA                   ; 啟動發(fā)送過程
     JB       SM_BUSY,$             ;等待發(fā)送結(jié)束(在中斷中處理)
     POP      ACC     
	 RET               
;SMBus 中斷程序
;在中斷程序中實現(xiàn)對不同狀態(tài)碼的軟件處理,SMBus狀態(tài)碼表被分成8字節(jié)的狀態(tài)段,
;用狀態(tài)碼索引值查找表,尋找8字節(jié)的程序段,;從狀態(tài)表的開始位置向下偏移,偏移量為;其狀態(tài)代碼值。每個狀態(tài)用ORG命令起始。
    SMBus_ISR:
    PUSH     PSW                ; 保護現(xiàn)場
    PUSH     ACC                ; 
    PUSH     DPH                ;  
    PUSH     DPL                ; 
    MOV     A,SMB0STA ; 將當前SMBus狀態(tài)裝入累加器,每個狀態(tài)對應(yīng)一個地址偏移量
    MOV     DPTR,#SMB_STATE_TABLE    ; DPTR指向狀態(tài)表的起始地址
    JMP    @A+DPTR                   ;轉(zhuǎn)移到當前狀態(tài)
;SMBuS狀態(tài)表 
    SMB_STATE_TABLE:   ; SMB_BUS_ERROR總線錯誤. 
    ORG   SMB_STATE_TABLE+SMB_BUS_ERROR   ;1.( 狀態(tài)寄存器SMB0STA =00H)
    SETB   STO         ; 停止位置1使硬件復(fù)位
    JMP   SMB_ISR_END    ; 中斷返回
 ;SMB_START
;主發(fā)送器/接收器:已發(fā)送起始位,再發(fā)送讀和寫操作的存儲器地址 
    ORG    SMB_STATE_TABLE+SMB_START      ; 2.( 狀態(tài)寄存器SMB0STA =08H)
    MOV    SMB0DAT,SLAW            ; 裝載從地址+ W
    CLR    STA                     ; 清除START位
    JMP    SMB_ISR_END             ; 中斷返回
;SMB_RP_START
;主發(fā)送器/接收器:已發(fā)送重復(fù)起始位
;該狀態(tài)只應(yīng)在讀操作期間出現(xiàn),在已發(fā)出存儲器地址,并得到確認之后發(fā)出
    ORG   SMB_STATE_TABLE+SMB_RP_START      ;3(狀態(tài)寄存器SMB0STA =10H)
    CLR   STA                               ; 清除START位
    JMP   SMB_ISR_END
;SMB_MTADDACK
;主發(fā)送器:已發(fā)送從地址+WRITE,收到ACK
    ORG    SMB_STATE_TABLE+SMB_MTADDACK      ;4.( 狀態(tài)寄存器SMB0STA =18H)
    MOV    SMB0DAT,SUBADDR                   ;裝載存儲器地址
    SETB   BYTE_SENT                   ;BYTE_SENT=1.存儲器地址剛被發(fā)送出去。
JMP   SMB_ISR_END
;SMB_MTADDNACK
;主發(fā)送器:已發(fā)送從地址+WRITE,收到 NACK。從器件不應(yīng)答
;用確認查詢重試。發(fā)送 STOP+START
ORG    SMB_STATE_TABLE + SMB_MTADDNACK       ;5.( 狀態(tài)寄存器SMB0STA =20H)
   SETB    STO
   SETB     STA
   JMP     SMB_ISR_END
;SMB_MTDBACK                                 ;6(狀態(tài)寄存器SMB0STA =28H)
;主發(fā)送器:已發(fā)送數(shù)據(jù)字節(jié);收到ACK。主機共需發(fā)送六個字節(jié)到SAA1064
;檢查DATA_COUNT,六個字節(jié)送完否?送完了,就轉(zhuǎn)DATA_SENT,傳輸結(jié)束 
;由于狀態(tài)碼的地址存放間隔只有8字節(jié)的空間。所以在指令碼需要多于8字節(jié)的場合,
;程序要轉(zhuǎn)到狀態(tài)表以外的代碼空間。
 ORG   SMB_STATE_TABLE+SMB_MTDBACK  
       DJNZ   COUNT,ADDRESS_SENT
	   JMP    DATA_SENT             
;SMB_MTDBNACK
;主發(fā)送器:已發(fā)送數(shù)據(jù)字節(jié);收到NACK,從器件不應(yīng)答
;用確認查詢重試。發(fā)送STOP+START重試
   ORG   SMB_STATE_TABLE+SMB_MTDBNACK       ;7(狀態(tài)寄存器SMB0STA =30H)
    SETB     STO
    SETB     STA
   JMP     SMB_ISR_END
; SMB_MTARBLOST
;以下是處理"SMB_MTDBACK"狀態(tài)碼的程序段。
;寫SAA1064,則將待發(fā)送數(shù)據(jù)裝入SMBODAT。
    ADDRESS_SENT:
	MOV     DPTR,#TAB   ;查表,找到顯示的數(shù)據(jù)(字型碼)
	MOV     A,@R0       ;RO初值=7AH
	MOVC    A,@A+DPTR   ;查表,找出RAM  7AH---7EH中的數(shù)據(jù)的字型碼.
	CJNE    R0,#7CH,SS   ;在個位后面加小數(shù)點
	ADD     A,#80H
  SS: MOV     DATA1 ,A   
	  INC     R0  
      MOV     SMB0DAT,DATA1 ;將要顯示的數(shù)據(jù)(字型碼)送SAA1064
	  JMP     SMB_ISR_END            ; 中斷返回
;這是一個寫操作,數(shù)據(jù)字節(jié)已發(fā)出。傳輸過程結(jié)束。發(fā)送STOP,釋放總線,中斷返回
    DATA_SENT:
    SETB    STO                     ;發(fā)送STOP后中斷返回
    CLR     SM_BUSY                ; 釋放 SMBus
    JMP     SMB_ISR_END            ; 中斷返回
;恢復(fù)寄存器,清除SI位,從中斷返回
   SMB_ISR_END:
    CLR    SI
    POP    DPL 
    POP    DPH
    POP    ACC
    POP    PSW
    RETI
SPI_SMBUS_Init :
   ORL    OSCICN,#01H        ; 將內(nèi)部振蕩器頻率設(shè)置為4MHz
   MOV    XBR0,#03;選擇P0.0~P0.3分別為SPI接口的SCK、MISO、MOSI和NSS
	                 ;選擇P0.4~P0.5分別為SMBUS總線的SDA,SCL
   MOV    XBR1,#0   
   MOV    XBR2 ,#40H;      允許功能選擇開關(guān)和弱上拉
 ; 初始化SMBus程序段
   MOV   SMB0CN,#04H          ; 配置 SMBus在確認周期發(fā)送 ACK
   MOV   SMB0CR,#0ECH      ; 設(shè)置時鐘速率=100 kHz(內(nèi)部振蕩器頻率設(shè)置為4MHz)
   ORL   SMB0CN,#40H          ; 允許SMBus
MOV    A,#03
   MOV    EIE1,A              ; 允許SMBus中斷,允許SPI中斷
   MOV SPI0CFG ,#11000111B    ;選擇在時鐘的第2個邊沿采樣,
			                  ;SCK的空閑狀態(tài)為高電平,移位數(shù)為8位
   MOV SPI0CN,#00000011B      ;允許主方式,允許SPI
   MOV SPI0CKR,#19 ;按照SPI0CKR的計算公式,選擇SPI0CKR中的值應(yīng)該為19
RET
LM74:  ;LM74采樣溫度值(二進制16位數(shù))
 MOV   R4,#2            ;要從LM74讀入的數(shù)據(jù)有兩個字節(jié)
 SETB  EA			   ;CPU開中斷
 MOV A,EIE1
 ANL   A,#01
 MOV EIE1,A      	   ;置ESPI0位為1,允許SPI申請中斷          
 MOV   R1,#40H	 	     ;數(shù)據(jù)接收區(qū)首地址.
SETB    P0.7
ACALL  DEL0 
 CLR   P0.7
ACALL  DEL0 
 MOV  SPI0DAT,A	;啟動SPI發(fā)送,產(chǎn)生SCK.
 ACALL  DEL0   ;中斷服務(wù)程序從MISO端接收來自LM74的高8位(MOV  A,SPI0DAT)
MOV  SPI0DAT,A	;啟動SPI發(fā)送,產(chǎn)生SCK
ACALL  DEL0    ;中斷服務(wù)程序從MISO端接收來自LM74的低8位(MOV  A,SPI0DAT)
CJNE    R4,#0,LM74
 SETB   P0.7      
 LCALL  EXHH      ;整理溫度數(shù)據(jù)
RET
SPI_ISR:PUSH   ACC
	    	PUSH   PSW
        CLR     SPIF
	    	MOV     A,SPI0DAT
        MOV     @R1	,A		 ;取下一個數(shù)
        INC     R1 
        DJNZ    R4,BACK 	      ;是否接收到2個數(shù)?未完轉(zhuǎn)中斷返回
        MOV     A,EIE1            ;已完,置ESPI0位為0,
        ANL     A,#0FEH
        MOV     EIE1,A      	 ;置ESPI0位為0,禁止SPI申請中斷    
BACK:   POP     PSW
       	POP     ACC
	      RETI

       	POP     ACC
	      RETI

EXHH:    MOV  A,41H     ; 2x(41h)+2x(40h)
         RLC  A
         MOV  A,40H
         RL   A
         ADDC A,#0
         ACALL   EXCH   ;將溫度值由二進制數(shù)轉(zhuǎn)化為十進制數(shù).
         MOV  7DH,#0    ;          
         MOV  A,41H
         ANL  A,#40H
         CJNE A,#40H,PP1     ;加小數(shù)點
         MOV  7DH,#5H
   PP1:  MOV  79H,#0
	     MOV   A,40H        ;從40H最高位位符號判別位,
		 ANL   A,#80H
		 CJNE  A,#80H,PP2   ; 正號:79H<--#0
		 MOV   79H,#40H     ;負號: 79H<--#40H ("-")
PP2:     RET 
EXCH  : MOV     B,#10    ;將溫度值由二進制數(shù)轉(zhuǎn)化為三位十進制數(shù)
        DIV     AB
        MOV     7CH,B  ;   7AH存百位數(shù)
        MOV     B,#10
        DIV     AB
        MOV     7AH,A  ;   7BH存十位數(shù)
        MOV     A,B
        MOV     7BH,A 
        MOV     A,7CH   ;   7CH存?zhèn)€位數(shù)
        MOV     7CH,A
		MOV     7EH,#0AH  ;SAA1064顯示"C"字
		MOV     7AH,#0BH  ;當用SAA1064顯示時,(TAB+0AH)=#17H,
		RET                   ;#17H是SAA1064的控制命令COM
DEL0:   MOV R6,#0FH
TM:     MOV R7,#0FFH
        DJNZ R7,$
        DJNZ R6,TM
        RET
;長延時子程序
DELY:MOV R5,#0FFH
TTM1: LCALL DEL0
      DJNZ R5,TTM1
      RET
      END

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91久久综合桃花| 精品久久久久av影院| 亚洲色图另类专区| 成人网在线免费视频| 国产网站一区二区三区| 精品影院一区二区久久久| 91精品国产一区二区三区 | 亚洲激情自拍视频| 91在线一区二区| 中文字幕一区三区| 99久久777色| 亚洲欧美日韩在线| 91麻豆福利精品推荐| 亚洲视频1区2区| 一本色道久久综合亚洲aⅴ蜜桃| 中文字幕一区二区三区不卡在线 | 国产精品成人免费在线| 高清不卡一二三区| 中国色在线观看另类| 成人av中文字幕| 亚洲视频在线一区观看| 在线日韩av片| 亚洲va欧美va人人爽午夜| 欧美精品少妇一区二区三区| 天天爽夜夜爽夜夜爽精品视频 | 97久久人人超碰| 亚洲乱码国产乱码精品精的特点| 色悠久久久久综合欧美99| 亚洲一区在线观看网站| 777亚洲妇女| 极品少妇xxxx偷拍精品少妇| 久久精品日产第一区二区三区高清版| 国产精品99久久久久久有的能看| 日本一区二区动态图| 91首页免费视频| 亚洲成av人**亚洲成av**| 日韩欧美国产综合| 国产91丝袜在线18| 一区二区三区在线观看国产| 欧美日韩一区二区三区不卡| 麻豆国产精品官网| 欧美国产国产综合| 欧美天堂一区二区三区| 免费成人av在线播放| 久久精品夜色噜噜亚洲a∨| 成人avav影音| 午夜国产精品一区| 久久久久久久久久电影| 成人福利视频网站| 亚洲电影中文字幕在线观看| 精品国产欧美一区二区| 不卡电影一区二区三区| 性做久久久久久免费观看欧美| 欧美成人午夜电影| 成人国产视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 日韩免费视频一区二区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 一区二区三区不卡视频| 欧美大黄免费观看| 色婷婷综合久久久中文一区二区| 欧美a一区二区| 亚洲国产高清在线| 欧美日韩一区三区四区| 黄色小说综合网站| 一区二区高清免费观看影视大全| 日韩欧美精品三级| 日本久久电影网| 久久 天天综合| 亚洲三级理论片| 精品免费国产二区三区| 91国产福利在线| 久久国产精品一区二区| 一区二区三区美女视频| 久久久精品人体av艺术| 欧美三级视频在线播放| 国产91丝袜在线18| 日本免费在线视频不卡一不卡二| 中文字幕一区二区三区在线不卡| 日韩美一区二区三区| 色综合天天综合在线视频| 久久精品久久综合| 亚洲电影在线免费观看| 国产精品久久久久婷婷二区次| 91精品国产综合久久香蕉的特点| 不卡一区二区在线| 国产乱码精品一区二区三| 亚洲电影视频在线| 成人欧美一区二区三区在线播放| 日韩免费高清视频| 欧美色老头old∨ideo| eeuss鲁片一区二区三区在线观看| 麻豆专区一区二区三区四区五区| 亚洲人123区| 久久婷婷色综合| 777xxx欧美| 在线国产亚洲欧美| 国产成人精品免费视频网站| 青青草原综合久久大伊人精品优势| 一二三区精品福利视频| 国产精品久久精品日日| 久久综合av免费| 日韩美女在线视频| 欧美顶级少妇做爰| 在线免费一区三区| 97精品久久久久中文字幕| 国产高清久久久久| 紧缚捆绑精品一区二区| 免费视频一区二区| 婷婷久久综合九色国产成人 | 国产精品网站在线观看| 欧美tk—视频vk| 欧美一区二区三区视频在线观看 | 色综合欧美在线视频区| 国产99久久久国产精品潘金网站| 久草在线在线精品观看| 日本中文字幕一区二区视频| 亚洲成人一区在线| 亚洲午夜影视影院在线观看| 一区二区三区欧美亚洲| 亚洲精品乱码久久久久久黑人| ...xxx性欧美| 中文字幕亚洲一区二区av在线 | 国产一区二区成人久久免费影院| 奇米一区二区三区av| 日韩avvvv在线播放| 午夜久久电影网| 日日欢夜夜爽一区| 日韩精品久久久久久| 五月激情六月综合| 五月婷婷激情综合网| 婷婷久久综合九色综合绿巨人 | 日本成人中文字幕在线视频| 日韩精品视频网| 美国十次综合导航| 国内精品伊人久久久久影院对白| 久久精品国产网站| 国产一区二区三区在线看麻豆| 激情综合色丁香一区二区| 精品一区二区在线观看| 国内久久婷婷综合| 国产成人夜色高潮福利影视| 大白屁股一区二区视频| 不卡一区在线观看| 在线观看亚洲精品视频| 在线观看视频欧美| 欧美精品国产精品| 精品剧情v国产在线观看在线| 精品国精品自拍自在线| 久久久不卡网国产精品一区| 日本一区二区三区四区在线视频| 国产精品久久久久久久岛一牛影视| 国产精品久久久久一区二区三区共| 亚洲欧美日韩成人高清在线一区| 亚洲男人的天堂在线aⅴ视频| 亚洲高清免费一级二级三级| 日韩电影一区二区三区四区| 蜜臀91精品一区二区三区| 国产精品一级二级三级| 99国产精品久久久| 欧美另类一区二区三区| 精品国产人成亚洲区| 亚洲欧美在线视频| 亚洲1区2区3区4区| 国产综合久久久久久久久久久久| 成人av综合一区| 欧美日韩国产高清一区二区三区 | 欧美偷拍一区二区| 日韩精品一区二区三区在线观看| 26uuu亚洲| 亚洲卡通欧美制服中文| 视频一区视频二区在线观看| 国产一区二区三区黄视频| 94-欧美-setu| 日韩一级免费观看| 中文字幕不卡的av| 午夜精品久久久久影视| 国产一区二区在线电影| 一本大道综合伊人精品热热| 欧美高清激情brazzers| 国产午夜精品美女毛片视频| 一区二区不卡在线播放| 久久电影国产免费久久电影| 成人激情开心网| 欧美精品亚洲二区| 国产精品久久久久aaaa| 日本亚洲视频在线| caoporn国产精品| 91精品国产色综合久久不卡蜜臀| 国产女人18毛片水真多成人如厕 | 亚洲午夜免费电影| 久久精品国产亚洲5555| 色婷婷av一区| 2021中文字幕一区亚洲| 一级女性全黄久久生活片免费| 国产一区二区h| 欧美性生活大片视频| 国产日韩av一区二区| 日日夜夜一区二区| 99久久精品国产一区二区三区|