找回密码
 注册
关于网站域名变更的通知
查看: 329|回复: 1
打印 上一主题 下一主题

这个是学习51过程中非常经典的一些程序,AD09原理图与pcb,非常适合初学者

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-11-28 07:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这个是学习51过程中非常经典的一些程序,AD09原理图与pcb,非常适合初学者6 @0 c; ~% v% m7 U
#include <STC12C5A60S2.H>
% U. \( g. o- S( I' t5 i+ d3 L( W

% W$ f$ [8 e! V( P, U. H. [sbit K_OUT4 = P2^7;
" I0 J5 L1 o  `0 W+ psbit K_OUT3 = P2^6;
: D' e$ S. m# g! @5 Wsbit K_OUT2 = P2^5;
- t3 ?% s; u2 }3 C  Z# c" `2 N# ^; Nsbit K_OUT1 = P2^4;
/ Y1 f0 P/ }0 x% @7 A4 ?/ E9 W4 M
0 |- u- Z! j8 G) x

! R9 A- D9 m8 b8 p+ c: Qsbit K_IN1 = P2^0;
; `9 @' o7 I9 G: ysbit K_IN2 = P2^1;
+ _+ g7 }. O  r3 r" x- Q# v: Msbit K_IN3 = P2^2;
' o9 ^1 T, ^6 h% O. F9 W' Ysbit K_IN4 = P2^3;
5 `. o  l# Q% i; R- k$ N& e& q" m( v, v

& B; L# k% Q/ y5 g. Jbit KeySta = 1;
. s1 U/ V- C  L
  O* B. v$ P: _( N3 ~4 `5 u8 `5 [

) t8 {9 u. ^4 {  C: J/ n  t! Svoid UART_Sent(char dat);) a* {! R$ R1 |% y  q

) g8 c; U, O% T: S0 M0 p& J/ J
- Q; g, c, D: U) \; e- v  S/ N
void main()" n5 H' c" y' ?' y$ p8 x
{+ a7 ^  t7 h8 Y6 h1 ?
        bit backup = 1;
! u- g1 T! X+ L4 G2 e        unsigned char cnt = 0;) O0 u5 y8 b0 Y7 u: r/ I
        K_OUT4 = 0;
- G2 ]4 T$ P. N9 {, _1 W        K_IN1 = 1;
: c; a* G% Z) V2 r0 N: U        EA=1;
# ?3 P, U0 G6 [4 H5 ]# k        
1 T  h" [% G0 _$ C        /*第一步:设置串口工作模式*/5 X; }% m6 a/ l' h/ _$ ^/ T
        SM0 = 0;6 d5 {) \* U4 U; _" r- Z
        SM1 = 1;+ B" n' t) L  J
        /*第二步:设置波特率发生器*/1 G1 j* H, J9 U. b
        AUXR |= (1 << 0);                        //选择:独立波特率发生器
% |3 a& R" S( U/ _        AUXR |= (1 << 2);                        //每一个时钟计数一次
7 t# b" p$ b3 X+ i! A& O        BRT = 0xE6;
0 J" v& e. l  V9 f' S        AUXR |= (1 << 4);                        //开启独立波特率发生器1 E9 `, I* |) M; F& L8 E: w
        TMOD = 0x01;                                        //使用定时器0的模式1:即16位计数器,优点:可装载的值较多,计时可较长- }1 G+ Z3 X# n
        TH0 = 0xF8;
% T$ F5 T; R, e9 c! y6 Q: B        TL0 = 0xCD;         9 R! E) w5 n. x0 B
        ET0=1;( I1 T4 F3 o- H
        TR0=1;7 |1 |0 T+ ^7 f- e. i

6 D% N9 e2 W* ?/ ?! ]

9 N- Q+ B" L" K( w& s$ b. B9 c/ Y8 q" [$ c$ m6 U" }% x8 P  G1 O
2 k7 s: c. g" y; e, F
        while(1)
; u. P; L$ c3 t, d% W0 _3 A        {                                
* N( D- G. U: m8 K4 `1 W; @: M                if(KeySta != backup)* }- S$ g5 P: I! O
                   {0 k5 h  S* s- L9 W& P2 {
                                   if(backup == 0)$ k$ B; V, F7 Z5 k! k. O) c' V. d
                                {
* M9 D2 L; m" r/ y% Y7 k7 ~. J                                        cnt++;  X, T6 d' \# l0 d! B4 N% x
                                        if(cnt >= 10)
& X3 R8 v3 h+ I* V  w- v                                        {( S4 _2 b+ ^# }0 s4 l
                                                cnt = 0;
" r' I: O# \( n5 M) s' C: ~                                        }# H0 {5 S5 U7 T
                                        UART_Sent(cnt+48);3 _, t. ]7 U4 p% `3 s- L+ m* T
                                }8 h: z8 _: E7 j% u4 w
                                backup = KeySta;
4 `0 V. M! U/ ?  R' V                   }         
1 m+ B3 o% Z. \% N& W. J- @, i        }         
- p+ m" _4 q3 z8 E0 @}. ?* \* Z. O" C" @' b5 D8 c

( `. T9 r% [- K1 F7 |$ i- h

; E. u! e) y  Fvoid UART_Sent(char dat)
: }7 Q. v. |6 ^{        $ N. }8 h+ R- r, q+ \

/ B  U4 k; M7 D# D! |

# Y( U$ Z& A& A- S        SBUF=dat;! _3 V7 D; m" h+ W; R& E; V6 o$ K
        while(!TI);  \% m# }: g( I" C& x& v$ _
        TI=0;
8 M& {4 k8 |5 B$ F" C0 c}  X" t7 W& H0 z  T0 a3 N

7 U! N- `. l' }" E6 Q. V/ M1 R

: f: T" e, l) P6 Wvoid timer_0() interrupt 1
0 m6 a/ Q# [5 a6 ^{9 N. O/ A7 S* u# j) [' \
        static unsigned char keybuf =0xff;( y9 Z: w- A1 `% n

5 t% g* y- t4 Q
6 ^, o! {# Z# }3 R8 I5 H+ |
        TH0 = 0xF8;
  f. c# K, a7 o9 i3 _' Y" S/ m: Y        TL0 = 0xCD;/ b% |) D8 p) n5 z" T
* c0 X' ]& N7 C# {$ W4 r' \

) ?  L5 e9 |4 v. B3 c" T/ {9 Q        % P9 H/ [2 W2 p7 [1 Q5 J
        keybuf = (keybuf <<1) |K_IN1;         
7 |" s# c9 c9 T        if(keybuf == 0x00)
7 j8 l# m6 z0 q        {
& o' Y  K6 s5 d. m) ^3 T                KeySta = 0;        & i$ Y! l% \  A3 T
        }
. ]+ d& d; n& i, X" ?: f        else if(keybuf == 0xFF)
5 F0 t& d' ^2 Z9 w0 \        {
3 O6 c7 l$ @" J% B1 G2 q                KeySta = 1;
# m8 ]$ i6 j% a* u7 O) p) ^        }
9 }$ I4 J# S- f3 n5 H# j        else
7 B" D7 Z; d9 E0 U. m        {
9 ~: _7 W0 Y$ F. b0 J        }
7 @8 d* H3 h# h7 q% F}                ) `" G# g$ [, ]  |! f1 V4 _3 f
( I! j: E1 s% |
) w& u& Z3 M& ~6 J6 H

6 y# e, W# L- g; R  e2 ~) ?6 h
游客,如果您要查看本帖隐藏内容请回复
  Z; r1 ]3 B/ @+ R' n% r* z
# M* O) F9 ~2 X* H2 W/ C# m. f7 T4 Z
4 X5 {% c  R* e& Q
! Q3 k* a# R) Q5 u9 C1 A

该用户从未签到

2#
发表于 2018-11-28 11:07 | 只看该作者
谢谢楼主,学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-13 17:15 , Processed in 0.093750 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表