程序并不难,关键是你用心的程度;
我猜你也许也是一名我的同行……
自己的努力才是过硬的本领!!!!
LIBRARY IEEE
USE IEEE.STD_LOGIC_1164.ALL
USE IEEE.STD_LOGIC_UNSIGNED.ALL
ENTITY RS_clk IS
PORT( S,R,res :IN std_logic
Q,NOT_Q:out std_logic)
END RS_clk
ARCHITECTURE behav OF RS_clk IS
signal sel1,sel2: std_logic
BEGIN
process(res,sel1,sel2)
begin
if res='0' then sel1<='0'
sel2<='1'
elsif (S='1' and R='0') then sel1<='1'
sel2<='0'
elsif (S='0' and R='1') then sel1<='0'
sel2<='1'
elsif (S='0' and R='0') then sel1<=sel1
sel2<=sel2
end if
Q<=sel1
NOT_Q<=sel2
end process
END behav
亲,,你看看这对不对,,我试过了,,没错LIBRARY IEEE
USE IEEE.STD_LOGIC_1164.ALL
USE IEEE.STD_LOGIC_UNSIGNED.ALL
ENTITY RS_clk IS
PORT( S,R,res :IN std_logic
Q,NOT_Q:out std_logic)
END RS_clk
ARCHITECTURE behav OF RS_clk IS
signal sel1,sel2: std_logic
BEGIN
process(res,sel1,sel2)
begin
if res='0' then sel1<='0'
sel2<='1'
elsif (S='1' and R='0') then sel1<='1'
sel2<='0'
elsif (S='0' and R='1') then sel1<='0'
sel2<='1'
elsif (S='0' and R='0') then sel1<=sel1
sel2<=sel2
end if
Q<=sel1
NOT_Q<=sel2
end process
END behav
RS232是全双工,可以同时收发,RS485是半双工,不能同时收发。它需要两个口线来控制当前通信是收还是发。收发的程序与232串口通信的程序是完全一样的,只要注意在收发前,进行收发状态的转换。如果你是嵌入式linux开发,你需要为这两个口线写个简单的驱动程序。
如果你是PC机上的linux,你可以用RS232转RS485的接口模块来进行232到485的转换,这样,你的串口程序不需什么任何修改。但要注意,此种模块要利用RS232的流量控制信号来进行收发的转换,所以,它只能插在9线的RS232口中使用,而不能用于3线制的RS232口
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)