sfc47.awl 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. ORGANIZATION_BLOCK OB 1
  2. BEGIN
  3. // Test SFC 47: WAIT
  4. // Zero delay should not wait.
  5. CALL SFC 64 ( // Get timestamp
  6. RET_VAL := MD 0
  7. )
  8. CALL SFC 47 (
  9. WT := 0
  10. )
  11. __ASSERT== __STW BIE, 1
  12. CALL SFC 64 ( // Get timestamp
  13. RET_VAL := MD 4
  14. )
  15. L MD 4
  16. L MD 0
  17. -D
  18. UD DW#16#7FFFFFFF
  19. __ASSERT<= __ACCU 1, 10
  20. // Check short delay.
  21. CALL SFC 64 ( // Get timestamp
  22. RET_VAL := MD 0
  23. )
  24. CALL SFC 47 (
  25. WT := 1
  26. )
  27. __ASSERT== __STW BIE, 1
  28. CALL SFC 64 ( // Get timestamp
  29. RET_VAL := MD 4
  30. )
  31. L MD 4
  32. L MD 0
  33. -D
  34. UD DW#16#7FFFFFFF
  35. __ASSERT<= __ACCU 1, 20
  36. // Check maximum delay.
  37. CALL SFC 64 ( // Get timestamp
  38. RET_VAL := MD 0
  39. )
  40. CALL SFC 47 (
  41. WT := 32767
  42. )
  43. __ASSERT== __STW BIE, 1
  44. CALL SFC 64 ( // Get timestamp
  45. RET_VAL := MD 4
  46. )
  47. L MD 4
  48. L MD 0
  49. -D
  50. UD DW#16#7FFFFFFF
  51. __ASSERT>= __ACCU 1, 32
  52. __ASSERT<= __ACCU 1, 50
  53. // Negative delay should not wait.
  54. CALL SFC 64 ( // Get timestamp
  55. RET_VAL := MD 0
  56. )
  57. CALL SFC 47 (
  58. WT := -1
  59. )
  60. __ASSERT== __STW BIE, 1
  61. CALL SFC 64 ( // Get timestamp
  62. RET_VAL := MD 4
  63. )
  64. L MD 4
  65. L MD 0
  66. -D
  67. UD DW#16#7FFFFFFF
  68. __ASSERT<= __ACCU 1, 10
  69. // Negative delay should not wait.
  70. CALL SFC 64 ( // Get timestamp
  71. RET_VAL := MD 0
  72. )
  73. CALL SFC 47 (
  74. WT := -32768
  75. )
  76. __ASSERT== __STW BIE, 1
  77. CALL SFC 64 ( // Get timestamp
  78. RET_VAL := MD 4
  79. )
  80. L MD 4
  81. L MD 0
  82. -D
  83. UD DW#16#7FFFFFFF
  84. __ASSERT<= __ACCU 1, 10
  85. CALL SFC 46 // STOP CPU
  86. END_ORGANIZATION_BLOCK