⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad0804.c

📁 这个是自己编的一个简单的AD转换的程序。
💻 C
字号:
///////////////////////////
///A/D转换实验
///////////////////
#include <intrins.h>
#include <reg51.h>
//********************************************
//LIBRARY IEEE;
//USE IEEE.STD_LOGIC_1164.ALL;
//USE IEEE.STD_LOGIC_ARITH.ALL;
//USE IEEE.STD_LOGIC_UNSIGNED.ALL;

//*********************************************
ENTITY Ch9_2_1 
	PORT(
		 Din		: IN	STD_LOGIC_VECTOR(7 Downto 0);	-- A/D Data In
		 Dout		: OUT   STD_LOGIC_VECTOR(7 Downto 0);	-- A/D Data Out
		 CP			: IN    STD_LOGIC;		-- CLOCK
		 RST        : IN	STD_LOGIC;		-- System Reset
		 nCS,nWR,nRD: OUT   STD_LOGIC;		-- O/P Signal
		 nINTR		: IN    STD_LOGIC		-- I/P Signal	
		);
END Ch9_2_1;

--*********************************************
ARCHITECTURE a OF Ch9_2_1 IS
	TYPE 	STATE_TYPE IS	(S0,S1,S2,S3);	--State Type Declare
	SIGNAL  State 	: STATE_TYPE;		 	--(1)State Signal Declare
	SIGNAL  EC,nIN	: STD_LOGIC;		--Synchronous Control & A/D nINTR
	SIGNAL  D		: STD_LOGIC_VECTOR(7 Downto 0);	--Read A/D Data
BEGIN

SystemConnection: Block
Begin
	nIn <= nINTR;	
	Dout <= D;				-- A/D Data Out
End Block SystemConnection;

StateChange: Block
Begin
	PROCESS (CP,RST)				
	BEGIN
		IF RST = '1' Then			-- Reset State
				nCS <= '1';
				nWR <= '1';
				nRD <= '1';
				EC <= '0';

				State <= S0;

		ElsIF CP'Event And CP = '1' Then	
			CASE State IS

				WHEN S0 =>			--(2)STATE S0 & Write State
					nCS <= '0';
					nWR <= '0';
					nRD <= '1';
					EC <= '0';

					State <= S1;

				WHEN S1 =>			--(3)STATE S1 & A/D Conversion State
					nCS <= '1';
					nWR <= '1';
					nRD <= '1';
					EC <= '0';
					
					If nIN = '0' Then	--nINTR = '0' ?
						State <= S2;	--(7)
					End if;

				WHEN S2 =>			--(4)STATE S2 & Read State
					nCS <= '0';
					nWR <= '1';
					nRD <= '0';
					EC <= '1';		--(9)

					State <= S3;
			
				WHEN S3 =>			--(5)STATE S3
					nCS <= '1';
					nWR <= '1';
					nRD <= '1';
					EC <= '0';

					State <= S0;
					
				WHEN OTHERS =>		--(6)Initial State	
					State <= S0;
					
	 			END CASE;
		ENd If;
	END PROCESS; 
End Block StateChange;


ReadData: Block
Begin
	PROCESS (CP)
	BEGIN 	
		IF CP'Event AND CP = '1' THEN
			IF EC = '1' THEN			-- (8)Read State --> EC = '1'
				D <= Din;		-- Read A/D Convertor Data
			END IF;
		END IF;
	END PROCESS;
End Block ReadData;


END a;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -