关于政治请老师解答,这句话体现了我国什么经济制度
体现了--以公有制经济为主体,多种所有制经济共同发展的经济体制
望采纳~~谢谢
如何正确防御xss攻击
XSS攻击通常是指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
一、HttpOnly防止劫取Cookie
HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。目前主流浏览器都支持,HttpOnly解决是XSS后的Cookie支持攻击。
我们来看下百度有没有使用。
未登录时的Cookie信息
可以看到,所有Cookie都没有设置HttpOnly,现在我登录下
发现在个叫BDUSS的Cookie设置了HttpOnly。可以猜测此Cookie用于认证。
下面我用PHP来实现下:
?php
header("Set-Cookie: cookie1=test1;");
header("Set-Cookie: cookie2=test2;httponly",false);
setcookie('cookie3','test3',NULL,NULL,NULL,NULL,false);
setcookie('cookie4','test4',NULL,NULL,NULL,NULL,true);
?
script
alert(document.cookie);
/script
js只能读到没有HttpOnly标识的Cookie
二、输入检查
输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如、、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。
例如网站注册经常用户名只允许字母和数字的组合,或者邮箱电话,我们会在前端用js进行检查,但在服务器端代码必须再次检查一次,因为客户端的检查很容易绕过。
网上有许多开源的“XSS Filter”的实现,但是它们应该选择性的使用,因为它们对特殊字符的过滤可能并非数据的本意。比如一款php的lib_filter类:
$filter = new lib_filter();
echo $filter-go('1+11');
它输出的是1,这大大歪曲了数据的语义,因此什么情况应该对哪些字符进行过滤应该适情况而定。
三、输出检查
大多人都知道输入需要做检查,但却忽略了输出检查。
1、在HTML标签中输出
如代码:
?php
$a = "scriptalert(1);/script";
$b = "img src=# onerror=alert(2) /";
?
div?=$b?/div
a href="#"?=$a?/a
这样客户端受到xss攻击,解决方法就是对变量使用htmlEncode,php中的函数是htmlentities
?php
$a = "scriptalert(1);/script";
$b = "img src=# onerror=alert(2) /";
?
div?=htmlentities($b)?/div
a href="#"?=htmlentities($a)?/a
2、在HTML属性中输出
div id="div" name ="$var"/div
这种情况防御也是使用htmlEncode
在owasp-php中实现:
$immune_htmlattr = array(',', '.', '-', '_');
$this-htmlEntityCodec-encode($this-immune_htmlattr, "\"script123123;/script\"");
3、在script标签中输出
如代码:
?php
$c = "1;alert(3)";
?
script type="text/javascript"
var c = ?=$c?;
/script
这样xss又生效了。首先js变量输出一定要在引号内,但是如果我$c = "\"abc;alert(123);//",你会发现放引号中都没用,自带的函数都不能很好的满足。这时只能使用一个更加严格的JavascriptEncode函数来保证安全——除数字、字母外的所有字符,都使用十六进制"\xHH"的方式进行编码。这里我采用开源的owasp-php方法来实现
$immune = array("");
echo $this-javascriptCodec-encode($immune, "\"abc;alert(123);//");
最后输出\x22abc\x3Balert\x28123\x29\x3B\x2F\x2F
4、在事件中输出
a href="#" onclick="funcA('$var')" test/a
可能攻击方法
a href="#" onclick="funcA('');alter(/xss/;//')"test/a
这个其实就是写在script中,所以跟3防御相同
5、在css中输出
在owasp-php中实现:
$immune = array("");
$this-cssCodec-encode($immune, 'background:expression(window.x?0:(alert(/XSS/),window.x=1));');
6、在地址中输出
先确保变量是否是"http"开头,然后再使用js的encodeURI或encodeURIComponent方法。
在owasp-php中实现:
$instance = ESAPI::getEncoder();
$instance-encodeForURL(‘url’);
四、处理富文体
就像我写这篇博客,我几乎可以随意输入任意字符,插入图片,插入代码,还可以设置样式。这个时要做的就是设置好白名单,严格控制标签。能自定义 css件麻烦事,因此最好使用成熟的开源框架来检查。php可以使用htmlpurify
五、防御DOM Based XSS
DOM Based XSS是从javascript中输出数据到HTML页面里。
script
var x = "$var";
document.write("a href='"+x+"'test/a");
/script
按照三中输出检查用到的防御方法,在x赋值时进行编码,但是当document.write输出数据到HTML时,浏览器重新渲染了页面,会将x进行解码,因此这么一来,相当于没有编码,而产生xss。
防御方法:首先,还是应该做输出防御编码的,但后面如果是输出到事件或脚本,则要再做一次javascriptEncode编码,如果是输出到HTML内容或属性,则要做一次HTMLEncode。
会触发DOM Based XSS的地方有很多:
document.write()、document.writeln()、xxx.innerHTML=、xxx.outerHTML=、innerHTML.replace、document.attachEvent()、window.attachEvent()、document.location.replace()、document.location.assign()
急求基于单片机电脑时钟程序和原理图!
HOUR EQU 030H ;小时缓存
MINUTE EQU 031H ;分钟缓存
SECOND EQU 032H ;秒缓存
DHOUR EQU 040H ;定时小时缓存
DMINUTE EQU 041H ;定时分钟缓存
AJBZ EQU 042H ;按键次数标志
DSBZ EQU 022H ;定时开关标志
COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1
COUNT2 EQU 034H
SPL EQU 020H ;闪烁判断的依据
SET_BTN EQU 021H ;按键标志位
ORG 0000H
AJMP MAIN
ORG 001BH ;定时计数器T1中断入口地址
AJMP IT_1
ORG 040H
MAIN:MOV SPL,#00H ;闪烁标志清零
MOV DPTR,#TABLE ;码段首地址
MOV HOUR,#00H ;小时缓存清零
MOV MINUTE,#00H ;分缓存清零
MOV DHOUR,#00H ;定时小时缓存清零
MOV DMINUTE,#00H ;定时分缓存清零
MOV SECOND,#00H ;秒缓存清零
MOV AJBZ,#00H ;按键次数缓存清零
MOV COUNT1,#00H ;总计数1清零
MOV COUNT2,#00H ;总计数2清零
MOV DHOUR,#00H ;定时小时地址清零
MOV DSBZ,#00H ;定时开关标志清零
CLR P3.0 ;定时时间1控制位清零
CLR P3.1 ;定时时间2控制位清零
MOV TMOD,#20H ;设置计数方式
MOV TH1,#06H ;定时计数器T1高八位初值
MOV TL1,#06H ;定时计数器低八位初值
MOV IE,#10001000B ;设置允许中断,并且打开两个定时器
SETB TR1
LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)
JB SET_BTN.0,JUST_TIME ;标志位为1跳转
JNB P0.1, SUBB_TIME ;减操作
JB SET_BTN.1,SUBB_TIME
JNB P0.2, ADD_TIME ;加操作
JB SET_BTN.2,ADD_TIME
JB P0.6,TIME
CLR P3.0
JB P0.7,TIME
CLR P3.1
TIME1:JB SPL.3,DSXS ;转定时小时显示
JB SPL.4,DSXS ;转定时分钟显示
JB SPL.5,DSXS ;转定时开关显示
ACALL HOUR_SHOW ;小时显示
ACALL MINUTE_SHOW ;分钟显示
ACALL SECOND_SHOW ;秒显示
FHLOOP:AJMP LOOP
DSXS:ACALL DHOUR_SHOW ;定时小时显示
ACALL DMINUTE_SHOW ;定时分钟显示
ACALL DSECOND_SHOW ;定时开关显示
AJMP LOOP
JUST_TIME:
LJMP JUST_TIME1
SUBB_TIME:
JB SET_BTN.1,WAIT_BTN2_UP
ACALL DELAY2;
JB P0.1, TIME
SETB SET_BTN.1
JB SPL.1,SUBB_HOUR
JB SPL.2,SUBB_MIN
JB SPL.3,DSUBB_HOUR
JB SPL.4,DSUBB_MIN
JB SPL.5,GDS
AJMP TIME
ADD_TIME:
LJMP ADDTIME
SUBB_MIN:
MOV R1,MINUTE
CJNE R1,#00H,SUBB_MIN_OPT
MOV MINUTE,#3BH
AJMP TIME
SUBB_MIN_OPT:
DEC MINUTE
AJMP TIME
DSUBB_MIN:
MOV R1,DMINUTE
CJNE R1,#00H,DSUBB_MIN_OPT
MOV DMINUTE,#3BH
AJMP TIME
DSUBB_MIN_OPT:
DEC DMINUTE
AJMP TIME
SUBB_HOUR:
MOV R1,HOUR
CJNE R1,#00H,SUBB_HOUR_OPT
MOV HOUR,#17H
AJMP TIME
SUBB_HOUR_OPT:
DEC HOUR
AJMP TIME
DSUBB_HOUR:
MOV R1,DHOUR
CJNE R1,#00H,DSUBB_HOUR_OPT
MOV DHOUR,#17H
AJMP TIME
DSUBB_HOUR_OPT:
DEC DHOUR
AJMP TIME
WAIT_BTN2_UP:
JNB P0.1,TIME
CLR SET_BTN.1
AJMP TIME
TIME:LJMP TIME1
GDS:CLR DSBZ.0
LJMP TIME
ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP
ACALL DELAY2
JB P0.2, TIME
SETB SET_BTN.2
JB SPL.1,ADD_HOUR
JB SPL.2,ADD_MIN
JB SPL.3,DADD_HOUR
JB SPL.4,DADD_MIN
JB SPL.5,KDS
LJMP TIME
ADD_MIN:MOV R1,MINUTE
CJNE R1,#3BH,ADD_MIN_OPT
MOV MINUTE,#00H
LJMP TIME
ADD_MIN_OPT:
INC MINUTE
LJMP TIME
DADD_MIN:
MOV R1,DMINUTE
CJNE R1,#3BH,DADD_MIN_OPT
MOV DMINUTE,#00H
LJMP TIME
DADD_MIN_OPT:
INC DMINUTE
LJMP TIME
ADD_HOUR:
MOV R1,HOUR
CJNE R1,#17H,ADD_HOUR_OPT
MOV HOUR,#00H
LJMP TIME
ADD_HOUR_OPT:
INC HOUR
LJMP TIME
DADD_HOUR:
MOV R1,DHOUR
CJNE R1,#17H,DADD_HOUR_OPT
MOV DHOUR,#00H
LJMP TIME
DADD_HOUR_OPT:
INC DHOUR
LJMP TIME
WAIT_BTN3_UP:
JNB P0.2,TIME
CLR SET_BTN.2
LJMP TIME
KDS:SETB DSBZ.0
LJMP TIME
JUST_TIME1:
JB SET_BTN.0,WAIT_UP
ACALL DELAY2
JB P0.0, TIME
SETB SET_BTN.0
MOV R1,AJBZ
CJNE R1,#05H,INC1
MOV AJBZ,#00H
MOV SPL,#00H
LJMP TIME
INC1:INC AJBZ
MOV R1,AJBZ
CJNE R1,#01H,JSFZ ;计时分钟
SETB SPL.1
LJMP TIME
JSFZ:CJNE R1,#02H,DSX ;定时小时
CLR SPL.1
SETB SPL.2
LJMP TIME
DSX:CJNE R1,#03H,DSFZ ;定时分钟
CLR SPL.2
SETB SPL.3
LJMP TIME
DSFZ:CJNE R1,#04H,DSKG ;定时开关
CLR SPL.3
SETB SPL.4
DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态
CLR SPL.4
SETB SPL.5
LJUMP_TIME:
LJMP TIME
WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志
CLR SET_BTN.0
LJMP TIME
WAIT2_DL1:
ACALL DELAY1
ACALL DELAY1
RET
HOUR_SHOW:
JNB SPL.1, HOUR_SHOW_HRER
JB SPL.0, HOUR_SHOW_HRER
ACALL WAIT2_DL1
RET
HOUR_SHOW_HRER: ;小时显示
SETB P2.6
SETB P2.7
CLR A
MOV A,HOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时各位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
MINUTE_SHOW:
JNB SPL.2, MINUTE_SHOW_HERE
JB SPL.0, MINUTE_SHOW_HERE
ACALL WAIT2_DL1
RET
MINUTE_SHOW_HERE:
SETB P2.5
SETB P2.4
CLR A
MOV A,MINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
SECOND_SHOW:
SETB P2.3
SETB P2.2
CLR A
MOV A,SECOND
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
JNB DSBZ.0,DYFH ;定时比较开始
JB P3.0,DYFH
MOV A,HOUR
CJNE A,DHOUR,DYFH
MOV A,MINUTE
CJNE A,DMINUTE,DYFH
SETB P3.0
DYFH:RET
DHOUR_SHOW: ;调整定时时间显示
JNB SPL.3,XSS
JB SPL.0, XSS
ACALL WAIT2_DL1
RET
XSS:SETB P2.6
SETB P2.7
CLR A
MOV A,DHOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时个位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
;定时分钟显示
DMINUTE_SHOW:
JNB SPL.4,XSF
JB SPL.0, XSF
ACALL WAIT2_DL1
RET
XSF:SETB P2.5
SETB P2.4
CLR A
MOV A,DMINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
;定时开关显示
DSECOND_SHOW:
JNB SPL.5,XSM ;显示秒(定时开关)
JB SPL.0,XSM
ACALL WAIT2_DL1
RET
XSM:SETB P2.3
SETB P2.2
CLR A
MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
JNB DSBZ.0,GBZ ;关标志
MOV A,#0BH
AJMP XS
GBZ:MOV A,#0AH
XS:MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
MOV P1,#00H
RET
;短延时 ;显示短延时
DELAY1:MOV R6,#03H
DL1:MOV R7,08H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;按键延时
DELAY2:MOV R6,#0AH
DL21:MOV R7,0AH
DL22:DJNZ R7,DL22
DJNZ R6,DL21
RET
IT_1:PUSH ACC
PUSH B
PUSH PSW
INC COUNT1
MOV A,COUNT1
CJNE A,#28H,RETI_LABLE
INC COUNT2
MOV COUNT1,#00H
MOV A,COUNT2
MOV B,#32H
DIV AB
MOV A,B
JNZ C2_OPT
CPL P3.7 ;秒的闪烁
CPL SPL.0 ;调整闪烁
C2_OPT:MOV A,COUNT2
CJNE A,#64H,RETI_LABLE
INC SECOND
MOV COUNT2,#00H
MOV A,SECOND
CJNE A,#3CH,RETI_LABLE;
INC MINUTE
MOV SECOND,#00H
MOV A,MINUTE
CJNE A,#3CH,RETI_LABLE;
INC HOUR
MOV MINUTE,#00H
MOV A,HOUR
CJNE A,#18H,RETI_LABLE
MOV HOUR,#00H
RETI_LABLE:
POP PSW
POP B
POP ACC
RETI
;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表
; 0 1 2 3 4 5 6 7 8 9 F N
END
这个带定时的可以驱动继电器控制你的电器定时开关,原理图很简单啊
XS码是多大?
xs是加小号,计算尺码如下解释: 对于xs是多大号的问题我们可以用常规的思路来理解,既然s是小号,那么xs是加小号准不会错了,就是说xs比s还要小,通常女士的衣服会出现这样的标码,因为有些衣服的面料比较特殊,比如针织衫和梭织衫就常有xs的标码,还有xxs的标码呢,裤子几乎不会出现此标码。按照国际惯例xs的针织衫适合160的人穿。 在网购的时候,如果对衣服的尺码比太了解,你可以参照身边的同款同面料的衣服做对比,这样就不会出错,如果你所购买的衣服标有xs的号数,那么xs是多大号也可以估算出来,通常网上会按照从小到大的顺序排列,那么你根据它排的位置也可以估算出xs的大小来...
小马宝莉各cp的名称,如:虹林檎
云宝黛西(云宝)+阿杰(苹果嘉儿)=虹林檎,黛西的头发是彩虹色的,林檎指的是苹果杰克
云宝黛西(云宝)+萍琪派(碧琪)=恶作剧组,因为她们经常在一起恶作剧
云宝黛西(云宝)+萍卡美娜=杯糕组,来自黑暗六同人
云宝黛西(云宝)+小蝶(柔柔)=天马组,因为两个都是天马
云宝黛西(云宝)+暮光闪闪(紫悦)=图书组,因为云宝黛西经常去暮光那里借无畏天马,而暮光闪闪也爱看书
瑞瑞(珍奇)+阿杰(苹果嘉儿)=稀有苹果,瑞瑞=稀有,阿杰=苹果,这个我就不解释了
萍琪派(碧琪)+暮光闪闪(紫悦)=暮光派,这个很容易理解
萍琪派(碧琪)+小蝶(柔柔)=粉毛组,因为头发都是粉红色的
萍琪派(碧琪)+萍卡美娜=双重人格组、病态组,这个可以去了解一下黑暗六同人中的萍卡美娜和萍琪派的关系就可以理解
另外你好像不知道六主角的缩写,我来科普一下:
云宝黛西(云宝)=RD
暮光闪闪(紫悦)=TS
萍琪派(碧琪)=PP
苹果杰克(苹果嘉儿)=AJ
小蝶(柔柔)=FS
瑞瑞(珍奇)=RR
及下列配角
崔克西(特里克西)=TX
塞拉斯蒂亚公主(宇宙公主)=PC
落日余晖(余晖烁烁)=SS
我知道的就这么多了,求采纳QWQ打字累
89s52给写个能定时7小时的程序
HOUR EQU 030H ;小时缓存
MINUTE EQU 031H ;分钟缓存
SECOND EQU 032H ;秒缓存
DHOUR EQU 040H ;定时小时缓存
DMINUTE EQU 041H ;定时分钟缓存
AJBZ EQU 042H ;按键次数标志
DSBZ EQU 022H ;定时开关标志
COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1
COUNT2 EQU 034H
SPL EQU 020H ;闪烁判断的依据
SET_BTN EQU 021H ;按键标志位
ORG 0000H
AJMP MAIN
ORG 001BH ;定时计数器T1中断入口地址
AJMP IT_1
ORG 040H
MAIN:MOV SPL,#00H ;闪烁标志清零
MOV DPTR,#TABLE ;码段首地址
MOV HOUR,#00H ;小时缓存清零
MOV MINUTE,#00H ;分缓存清零
MOV DHOUR,#00H ;定时小时缓存清零
MOV DMINUTE,#00H ;定时分缓存清零
MOV SECOND,#00H ;秒缓存清零
MOV AJBZ,#00H ;按键次数缓存清零
MOV COUNT1,#00H ;总计数1清零
MOV COUNT2,#00H ;总计数2清零
MOV DHOUR,#00H ;定时小时地址清零
MOV DSBZ,#00H ;定时开关标志清零
CLR P3.0
MOV TMOD,#20H ;设置计数方式
MOV TH1,#06H ;定时计数器T1高八位初值
MOV TL1,#06H ;定时计数器低八位初值
MOV IE,#10001000B ;设置允许中断,并且打开两个定时器
SETB TR1
LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)
JB SET_BTN.0,JUST_TIME ;标志位为1跳转
JNB P0.1, SUBB_TIME ;减操作
JB SET_BTN.1,SUBB_TIME
JNB P0.2, ADD_TIME ;加操作
JB SET_BTN.2,ADD_TIME
JB P0.7,TIME
CLR P3.0
TIME1:JB SPL.3,DSXS ;转定时小时显示
JB SPL.4,DSXS ;转定时分钟显示
JB SPL.5,DSXS ;转定时开关显示
ACALL HOUR_SHOW ;小时显示
ACALL MINUTE_SHOW ;分钟显示
ACALL SECOND_SHOW ;秒显示
FHLOOP:AJMP LOOP
DSXS:ACALL DHOUR_SHOW ;定时小时显示
ACALL DMINUTE_SHOW ;定时分钟显示
ACALL DSECOND_SHOW ;定时开关显示
AJMP LOOP
JUST_TIME:
LJMP JUST_TIME1
SUBB_TIME:
JB SET_BTN.1,WAIT_BTN2_UP
ACALL DELAY2;
JB P0.1, TIME
SETB SET_BTN.1
JB SPL.1,SUBB_HOUR
JB SPL.2,SUBB_MIN
JB SPL.3,DSUBB_HOUR
JB SPL.4,DSUBB_MIN
JB SPL.5,GDS
AJMP TIME
ADD_TIME:
LJMP ADDTIME
SUBB_MIN:
MOV R1,MINUTE
CJNE R1,#00H,SUBB_MIN_OPT
MOV MINUTE,#3BH
AJMP TIME
SUBB_MIN_OPT:
DEC MINUTE
AJMP TIME
DSUBB_MIN:
MOV R1,DMINUTE
CJNE R1,#00H,DSUBB_MIN_OPT
MOV DMINUTE,#3BH
AJMP TIME
DSUBB_MIN_OPT:
DEC DMINUTE
AJMP TIME
SUBB_HOUR:
MOV R1,HOUR
CJNE R1,#00H,SUBB_HOUR_OPT
MOV HOUR,#17H
AJMP TIME
SUBB_HOUR_OPT:
DEC HOUR
AJMP TIME
DSUBB_HOUR:
MOV R1,DHOUR
CJNE R1,#00H,DSUBB_HOUR_OPT
MOV DHOUR,#17H
AJMP TIME
DSUBB_HOUR_OPT:
DEC DHOUR
AJMP TIME
WAIT_BTN2_UP:
JNB P0.1,TIME
CLR SET_BTN.1
AJMP TIME
TIME:LJMP TIME1
GDS:CLR DSBZ.0
LJMP TIME
ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP
ACALL DELAY2
JB P0.2, TIME
SETB SET_BTN.2
JB SPL.1,ADD_HOUR
JB SPL.2,ADD_MIN
JB SPL.3,DADD_HOUR
JB SPL.4,DADD_MIN
JB SPL.5,KDS
LJMP TIME
ADD_MIN:MOV R1,MINUTE
CJNE R1,#3BH,ADD_MIN_OPT
MOV MINUTE,#00H
LJMP TIME
ADD_MIN_OPT:
INC MINUTE
LJMP TIME
DADD_MIN:
MOV R1,DMINUTE
CJNE R1,#3BH,DADD_MIN_OPT
MOV DMINUTE,#00H
LJMP TIME
DADD_MIN_OPT:
INC DMINUTE
LJMP TIME
ADD_HOUR:
MOV R1,HOUR
CJNE R1,#17H,ADD_HOUR_OPT
MOV HOUR,#00H
LJMP TIME
ADD_HOUR_OPT:
INC HOUR
LJMP TIME
DADD_HOUR:
MOV R1,DHOUR
CJNE R1,#17H,DADD_HOUR_OPT
MOV DHOUR,#00H
LJMP TIME
DADD_HOUR_OPT:
INC DHOUR
LJMP TIME
WAIT_BTN3_UP:
JNB P0.2,TIME
CLR SET_BTN.2
LJMP TIME
KDS:SETB DSBZ.0
LJMP TIME
JUST_TIME1:
JB SET_BTN.0,WAIT_UP
ACALL DELAY2
JB P0.0, TIME
SETB SET_BTN.0
MOV R1,AJBZ
CJNE R1,#05H,INC1
MOV AJBZ,#00H
MOV SPL,#00H
LJMP TIME
INC1:INC AJBZ
MOV R1,AJBZ
CJNE R1,#01H,JSFZ ;计时分钟
SETB SPL.1
LJMP TIME
JSFZ:CJNE R1,#02H,DSX ;定时小时
CLR SPL.1
SETB SPL.2
LJMP TIME
DSX:CJNE R1,#03H,DSFZ ;定时分钟
CLR SPL.2
SETB SPL.3
LJMP TIME
DSFZ:CJNE R1,#04H,DSKG ;定时开关
CLR SPL.3
SETB SPL.4
DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态
CLR SPL.4
SETB SPL.5
LJUMP_TIME:
LJMP TIME
WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志
CLR SET_BTN.0
LJMP TIME
WAIT2_DL1:
ACALL DELAY1
ACALL DELAY1
RET
HOUR_SHOW:
JNB SPL.1, HOUR_SHOW_HRER
JB SPL.0, HOUR_SHOW_HRER
ACALL WAIT2_DL1
RET
HOUR_SHOW_HRER: ;小时显示
SETB P2.6
SETB P2.7
CLR A
MOV A,HOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时各位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
MINUTE_SHOW:
JNB SPL.2, MINUTE_SHOW_HERE
JB SPL.0, MINUTE_SHOW_HERE
ACALL WAIT2_DL1
RET
MINUTE_SHOW_HERE:
SETB P2.5
SETB P2.4
CLR A
MOV A,MINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
SECOND_SHOW:
SETB P2.3
SETB P2.2
CLR A
MOV A,SECOND
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
JNB DSBZ.0,DYFH ;定时比较开始
JB P3.0,DYFH
MOV A,HOUR
CJNE A,DHOUR,DYFH
MOV A,MINUTE
CJNE A,DMINUTE,DYFH
SETB P3.0
DYFH:RET
DHOUR_SHOW: ;调整定时时间显示
JNB SPL.3,XSS
JB SPL.0, XSS
ACALL WAIT2_DL1
RET
XSS:SETB P2.6
SETB P2.7
CLR A
MOV A,DHOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时个位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
;定时分钟显示
DMINUTE_SHOW:
JNB SPL.4,XSF
JB SPL.0, XSF
ACALL WAIT2_DL1
RET
XSF:SETB P2.5
SETB P2.4
CLR A
MOV A,DMINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
;定时开关显示
DSECOND_SHOW:
JNB SPL.5,XSM ;显示秒(定时开关)
JB SPL.0,XSM
ACALL WAIT2_DL1
RET
XSM:SETB P2.3
SETB P2.2
CLR A
MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
JNB DSBZ.0,GBZ ;关标志
MOV A,#0BH
AJMP XS
GBZ:MOV A,#0AH
XS:MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
MOV P1,#00H
RET
;短延时 ;显示短延时
DELAY1:MOV R6,#03H
DL1:MOV R7,08H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;按键延时
DELAY2:MOV R6,#0AH
DL21:MOV R7,0AH
DL22:DJNZ R7,DL22
DJNZ R6,DL21
RET
IT_1:PUSH ACC
PUSH B
PUSH PSW
INC COUNT1
MOV A,COUNT1
CJNE A,#28H,RETI_LABLE
INC COUNT2
MOV COUNT1,#00H
MOV A,COUNT2
MOV B,#32H
DIV AB
MOV A,B
JNZ C2_OPT
CPL P3.7 ;秒的闪烁
CPL SPL.0 ;调整闪烁
C2_OPT:MOV A,COUNT2
CJNE A,#64H,RETI_LABLE
INC SECOND
MOV COUNT2,#00H
MOV A,SECOND
CJNE A,#3CH,RETI_LABLE;
INC MINUTE
MOV SECOND,#00H
MOV A,MINUTE
CJNE A,#3CH,RETI_LABLE;
INC HOUR
MOV MINUTE,#00H
MOV A,HOUR
CJNE A,#18H,RETI_LABLE
MOV HOUR,#00H
RETI_LABLE:
POP PSW
POP B
POP ACC
RETI
;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表
; 0 1 2 3 4 5 6 7 8 9 F N
END
这个可以设定任意时间
单片机问题
HOUR EQU 030H ;小时缓存
MINUTE EQU 031H ;分钟缓存
SECOND EQU 032H ;秒缓存
DHOUR EQU 040H ;定时小时缓存
DMINUTE EQU 041H ;定时分钟缓存
AJBZ EQU 042H ;按键次数标志
DSBZ EQU 022H ;定时开关标志
COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1
COUNT2 EQU 034H
SPL EQU 020H ;闪烁判断的依据
SET_BTN EQU 021H ;按键标志位
ORG 0000H
AJMP MAIN
ORG 001BH ;定时计数器T1中断入口地址
AJMP IT_1
ORG 040H
MAIN:MOV SPL,#00H ;闪烁标志清零
MOV DPTR,#TABLE ;码段首地址
MOV HOUR,#00H ;小时缓存清零
MOV MINUTE,#00H ;分缓存清零
MOV DHOUR,#00H ;定时小时缓存清零
MOV DMINUTE,#00H ;定时分缓存清零
MOV SECOND,#00H ;秒缓存清零
MOV AJBZ,#00H ;按键次数缓存清零
MOV COUNT1,#00H ;总计数1清零
MOV COUNT2,#00H ;总计数2清零
MOV DHOUR,#00H ;定时小时地址清零
MOV DSBZ,#00H ;定时开关标志清零
CLR P3.0 ;定时时间到控制位清零
MOV TMOD,#20H ;设置计数方式
MOV TH1,#06H ;定时计数器T1高八位初值
MOV TL1,#06H ;定时计数器低八位初值
MOV IE,#10001000B ;设置允许中断,并且打开两个定时器
SETB TR1
LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)
JB SET_BTN.0,JUST_TIME ;标志位为1跳转
JNB P0.1, SUBB_TIME ;减操作
JB SET_BTN.1,SUBB_TIME
JNB P0.2, ADD_TIME ;加操作
JB SET_BTN.2,ADD_TIME
JB P0.7,TIME
CLR P3.0
TIME1:JB SPL.3,DSXS ;转定时小时显示
JB SPL.4,DSXS ;转定时分钟显示
JB SPL.5,DSXS ;转定时开关显示
ACALL HOUR_SHOW ;小时显示
ACALL MINUTE_SHOW ;分钟显示
ACALL SECOND_SHOW ;秒显示
FHLOOP:AJMP LOOP
DSXS:ACALL DHOUR_SHOW ;定时小时显示
ACALL DMINUTE_SHOW ;定时分钟显示
ACALL DSECOND_SHOW ;定时开关显示
AJMP LOOP
JUST_TIME:
LJMP JUST_TIME1
SUBB_TIME:
JB SET_BTN.1,WAIT_BTN2_UP
ACALL DELAY2;
JB P0.1, TIME
SETB SET_BTN.1
JB SPL.1,SUBB_HOUR
JB SPL.2,SUBB_MIN
JB SPL.3,DSUBB_HOUR
JB SPL.4,DSUBB_MIN
JB SPL.5,GDS
AJMP TIME
ADD_TIME:
LJMP ADDTIME
SUBB_MIN:
MOV R1,MINUTE
CJNE R1,#00H,SUBB_MIN_OPT
MOV MINUTE,#3BH
AJMP TIME
SUBB_MIN_OPT:
DEC MINUTE
AJMP TIME
DSUBB_MIN:
MOV R1,DMINUTE
CJNE R1,#00H,DSUBB_MIN_OPT
MOV DMINUTE,#3BH
AJMP TIME
DSUBB_MIN_OPT:
DEC DMINUTE
AJMP TIME
SUBB_HOUR:
MOV R1,HOUR
CJNE R1,#00H,SUBB_HOUR_OPT
MOV HOUR,#17H
AJMP TIME
SUBB_HOUR_OPT:
DEC HOUR
AJMP TIME
DSUBB_HOUR:
MOV R1,DHOUR
CJNE R1,#00H,DSUBB_HOUR_OPT
MOV DHOUR,#17H
AJMP TIME
DSUBB_HOUR_OPT:
DEC DHOUR
AJMP TIME
WAIT_BTN2_UP:
JNB P0.1,TIME
CLR SET_BTN.1
AJMP TIME
TIME:LJMP TIME1
GDS:CLR DSBZ.0
LJMP TIME
ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP
ACALL DELAY2
JB P0.2, TIME
SETB SET_BTN.2
JB SPL.1,ADD_HOUR
JB SPL.2,ADD_MIN
JB SPL.3,DADD_HOUR
JB SPL.4,DADD_MIN
JB SPL.5,KDS
LJMP TIME
ADD_MIN:MOV R1,MINUTE
CJNE R1,#3BH,ADD_MIN_OPT
MOV MINUTE,#00H
LJMP TIME
ADD_MIN_OPT:
INC MINUTE
LJMP TIME
DADD_MIN:
MOV R1,DMINUTE
CJNE R1,#3BH,DADD_MIN_OPT
MOV DMINUTE,#00H
LJMP TIME
DADD_MIN_OPT:
INC DMINUTE
LJMP TIME
ADD_HOUR:
MOV R1,HOUR
CJNE R1,#17H,ADD_HOUR_OPT
MOV HOUR,#00H
LJMP TIME
ADD_HOUR_OPT:
INC HOUR
LJMP TIME
DADD_HOUR:
MOV R1,DHOUR
CJNE R1,#17H,DADD_HOUR_OPT
MOV DHOUR,#00H
LJMP TIME
DADD_HOUR_OPT:
INC DHOUR
LJMP TIME
WAIT_BTN3_UP:
JNB P0.2,TIME
CLR SET_BTN.2
LJMP TIME
KDS:SETB DSBZ.0
LJMP TIME
JUST_TIME1:
JB SET_BTN.0,WAIT_UP
ACALL DELAY2
JB P0.0, TIME
SETB SET_BTN.0
MOV R1,AJBZ
CJNE R1,#05H,INC1
MOV AJBZ,#00H
MOV SPL,#00H
LJMP TIME
INC1:INC AJBZ
MOV R1,AJBZ
CJNE R1,#01H,JSFZ ;计时分钟
SETB SPL.1
LJMP TIME
JSFZ:CJNE R1,#02H,DSX ;定时小时
CLR SPL.1
SETB SPL.2
LJMP TIME
DSX:CJNE R1,#03H,DSFZ ;定时分钟
CLR SPL.2
SETB SPL.3
LJMP TIME
DSFZ:CJNE R1,#04H,DSKG ;定时开关
CLR SPL.3
SETB SPL.4
DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态
CLR SPL.4
SETB SPL.5
LJUMP_TIME:
LJMP TIME
WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志
CLR SET_BTN.0
LJMP TIME
WAIT2_DL1:
ACALL DELAY1
ACALL DELAY1
RET
HOUR_SHOW:
JNB SPL.1, HOUR_SHOW_HRER
JB SPL.0, HOUR_SHOW_HRER
ACALL WAIT2_DL1
RET
HOUR_SHOW_HRER: ;小时显示
SETB P2.6
SETB P2.7
CLR A
MOV A,HOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时各位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
MINUTE_SHOW:
JNB SPL.2, MINUTE_SHOW_HERE
JB SPL.0, MINUTE_SHOW_HERE
ACALL WAIT2_DL1
RET
MINUTE_SHOW_HERE:
SETB P2.5
SETB P2.4
CLR A
MOV A,MINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
SECOND_SHOW:
SETB P2.3
SETB P2.2
CLR A
MOV A,SECOND
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
JNB DSBZ.0,DYFH ;定时比较开始
JB P3.0,DYFH
MOV A,HOUR
CJNE A,DHOUR,DYFH
MOV A,MINUTE
CJNE A,DMINUTE,DYFH
SETB P3.0
DYFH:RET
DHOUR_SHOW: ;调整定时时间显示
JNB SPL.3,XSS
JB SPL.0, XSS
ACALL WAIT2_DL1
RET
XSS:SETB P2.6
SETB P2.7
CLR A
MOV A,DHOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时个位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
;定时分钟显示
DMINUTE_SHOW:
JNB SPL.4,XSF
JB SPL.0, XSF
ACALL WAIT2_DL1
RET
XSF:SETB P2.5
SETB P2.4
CLR A
MOV A,DMINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
;定时开关显示
DSECOND_SHOW:
JNB SPL.5,XSM ;显示秒(定时开关)
JB SPL.0,XSM
ACALL WAIT2_DL1
RET
XSM:SETB P2.3
SETB P2.2
CLR A
MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
JNB DSBZ.0,GBZ ;关标志
MOV A,#0BH
AJMP XS
GBZ:MOV A,#0AH
XS:MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
MOV P1,#00H
RET
;短延时 ;显示短延时
DELAY1:MOV R6,#03H
DL1:MOV R7,08H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;按键延时
DELAY2:MOV R6,#0AH
DL21:MOV R7,0AH
DL22:DJNZ R7,DL22
DJNZ R6,DL21
RET
IT_1:PUSH ACC
PUSH B
PUSH PSW
INC COUNT1
MOV A,COUNT1
CJNE A,#28H,RETI_LABLE
INC COUNT2
MOV COUNT1,#00H
MOV A,COUNT2
MOV B,#32H
DIV AB
MOV A,B
JNZ C2_OPT
CPL P3.7 ;秒的闪烁
CPL SPL.0 ;调整闪烁
C2_OPT:MOV A,COUNT2
CJNE A,#64H,RETI_LABLE
INC SECOND
MOV COUNT2,#00H
MOV A,SECOND
CJNE A,#3CH,RETI_LABLE;
INC MINUTE
MOV SECOND,#00H
MOV A,MINUTE
CJNE A,#3CH,RETI_LABLE;
INC HOUR
MOV MINUTE,#00H
MOV A,HOUR
CJNE A,#18H,RETI_LABLE
MOV HOUR,#00H
RETI_LABLE:
POP PSW
POP B
POP ACC
RETI
;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表
; 0 1 2 3 4 5 6 7 8 9 F N
END
有时、分、秒显示,可以定时驱动继电器来控制你的家用电器,具体使用方法看程序吧,程序懂了你就能做出来了
求类似墨香铜臭《天官赐福》里男主的朋友都很有趣的小说,只要呆一起就各种无厘头搞笑的那种风格。
我有一个秘密by西西特
黄单的痛感神经天生异于常人,磕破点皮,他能痛的浑身冒冷汗,说不出话来。莫名其妙开始穿越,跟着系统先生做任务以后……在第一个世界,黄单就体会到了什么叫痛的死去活来,活来再死去。
这里攻有个朋友性格有些迷,行事有些搞笑,再加上男主们也是有些迷的,而且剧情很棒,所以可以值得推荐一看。四刷五刷了,完全不会腻!