當前位置:首頁 » 編程軟體 » ds證據編程

ds證據編程

發布時間: 2023-08-02 21:44:28

㈠ 單片機中的DS1302編程時,它的讀、寫底層函數是干什麼用的,DS1302的初始化又是做什麼的

#include "ds1302.h"
void delaynus(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++);
}
void Write1302(unsigned char dat)
{
unsigned char i;
SCLK=0; //拉低SCLK,為脈沖上升沿寫入數據做好准備
delaynus(2); //稍微等待,使硬體做好准備
for(i=0;i<8;i++) //連續寫8個二進制位數據
{ DATA=dat&0x01; //取出dat的第0位數據寫入1302 低位在前,高位在後
delaynus(2); //稍微等待,使硬體做好准備
SCLK=1; //上升沿寫入數據
delaynus(2); //稍微等待,使硬體做好准備
SCLK=0; //重新拉低SCLK,形成脈沖
dat>>=1; //將dat的各數據位右移1位,准備寫入下一個數據位
} }
void WriteSet1302(unsigned char Cmd,unsigned char dat)
{
RST=0; //禁止數據傳遞
SCLK=0; //確保寫數居前SCLK被拉低
RST=1; //啟動數據傳輸
delaynus(2); //稍微等待,使硬體做好准備
Write1302(Cmd); //寫入命令字
Write1302(dat); //寫數據
SCLK=1; //將時鍾電平置於高電平狀態
RST=0; //禁止數據傳遞
}
unsigned char Read1302(void)
{
unsigned char i,dat;
delaynus(2); //稍微等待,使硬體做好准備
for(i=0;i<8;i++) //連續讀8個二進制位數據
{ dat>>=1;
if(DATA==1) //如果讀出的數據是1
dat|=0x80; //將1取出,寫在dat的最高位
SCLK=1; //將SCLK置於高電平,為下降沿讀出
delaynus(2); //稍微等待
SCLK=0; //拉低SCLK,形成脈沖下降沿
delaynus(2); //稍微等待
}
return dat; //將讀出的數據返回
}
unsigned char ReadSet1302(unsigned char Cmd)
{
unsigned char dat;
RST=0; //拉低RST
SCLK=0; //確保寫數居前SCLK被拉低
RST=1; //啟動數據傳輸
Write1302(Cmd); //寫入命令字
dat=Read1302(); //讀出數據
SCLK=1; //將時鍾電平置於已知狀態
RST=0; //禁止數據傳遞
return dat; //將讀出的數據返回
}
void Init_DS1302(void)
{
unsigned char flag;

flag= ReadSet1302(0x81);
if(flag&0x80) //判斷時鍾晶元是否關閉
{ WriteSet1302(0x8E,0x00); //根據寫狀態寄存器命令字,寫入不保護指令
WriteSet1302(0x80,((55/10)<<4|(55%10))); //根據寫秒寄存器命令字,寫入秒的初始值
WriteSet1302(0x82,((59/10)<<4|(59%10))); //根據寫分寄存器命令字,寫入分的初始值
WriteSet1302(0x84,((23/10)<<4|(23%10))); //根據寫小時寄存器命令字,寫入小時的初始值
WriteSet1302(0x86,((18/10)<<4|(18%10))); //根據寫日寄存器命令字,寫入日的初始值
WriteSet1302(0x88,((6/10)<<4|(6%10))); //根據寫月寄存器命令字,寫入月的初始值
WriteSet1302(0x8c,((9/10)<<4|(9%10))); //根據寫年寄存器命令字,寫入年的初始值
WriteSet1302(0x90,0xa5); //打開充電功能 選擇2K電阻充電方式
WriteSet1302(0x8E,0x80); //根據寫狀態寄存器命令字,寫入保護指令
}
}

㈡ 匯編語言中 cs, ds,ss 的區別

一、寄存器位置不同:

1、CS:代碼段寄存器;

2、DS:數據段寄存器;

3、SS:堆棧段寄存器。

二、存放位置不同:

1、代碼段寄存器CS:存放當前正在運行的程序代碼所在段的段基值。

2、數據段寄存器DS:存放數據段的段基值。

3、堆棧段寄存器SS:存放堆棧段的段基值。

三、段地址不同:

1、cs代碼段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,不能隨意修改它。

2、ss堆棧度段地址問聯合sp定義一個答堆棧,一旦你確定了堆棧地址,ss也不能隨便改變了。

3、ds數據段地址定義一個數據段。

(2)ds證據編程擴展閱讀:

匯編語言的特點是能被計算機直接識別和執行,使用它進行編程可以減少佔用空間、提高運行速度,並能直接對硬體實施控制。

在需要實時控制的時候,有著不可替代的重要地位,但匯編語言在編程和理解時要復雜、困難一些,尤其是在進行數據處理或是邏輯運算時更加凸顯出其劣勢。

高級語言是面向使用者的語言,能更准確地被程序員所理解,它的表達能力強,功能多,編程效率高,上手速度快,自動化程度高,因而更受歡迎。

在大部分軟體開發中,使用者都採用高級語言編程,以提高編程效率。但在要求存儲空間小,執行速度快,需直接對硬體進行控制的場合,則應用匯編語言編程,以達到優化程序速度的目的。

網路-匯編語言 (面向機器的程序設計語言)

㈢ 微機編程題,詳細如下,高分求解答!

;; 1.在M數據段從DATA單元開始分別存放了兩個8位無符號數,
;; 試比較它們的大小,並將小者傳送到MIN單元。
M SEGMENT
DATA DB 9FH, 0B6H
MIN DB ?
M ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:M
ORG 100H
START: MOV AX, M
MOV DS, AX
MOV AL, DS:[DATA]
MOV BL, DS:[DATA+1]
CMP AL, BL
JBE MIN_A
MOV MIN, BL
JMP FINISH
MIN_A: MOV MIN, AL
JMP FINISH
FINISH: INT 3 ;中止,以便在DEBUG中查看結果
CODE ENDS
END START
;;將asm源程序編譯鏈接生成exe, 在Win7的DOS中用debug運行通過,
;;運行至INT 3程序中止,在debug中用 d DS:02 命令,
;;可查看到MIN單元的值為茄碰較小值9Fh
==========================================

;; 2.已知AL中有鄭螞一8位二進制數,測試其中的D2位,
;; 如果為1則轉移到EXIT。
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START: MOV AL, 10110110b
TEST AL, 00000100b
JNZ EXIT
INT 3
EXIT: MOV AH, 4CH
INT 21H
CODE ENDS
END START
;;將asm源程序編譯鏈接生成exe, 在Win7的DOS中用debug運喊納埋行通過

熱點內容
徵婚交友源碼 發布:2025-02-05 17:45:24 瀏覽:917
3nvm伺服器怎麼搭建 發布:2025-02-05 17:43:52 瀏覽:660
cocosandroid開發 發布:2025-02-05 17:22:17 瀏覽:668
編程員發型 發布:2025-02-05 17:09:18 瀏覽:225
網站會員管理源碼 發布:2025-02-05 17:03:32 瀏覽:193
伺服器埠怎麼調節 發布:2025-02-05 16:57:41 瀏覽:46
樂山海棠社區民意上傳 發布:2025-02-05 16:55:52 瀏覽:510
編程老爺爺 發布:2025-02-05 16:48:20 瀏覽:129
支持ftp的免費空間 發布:2025-02-05 16:32:00 瀏覽:891
python時間比較 發布:2025-02-05 16:31:46 瀏覽:52